谢谢您阅读此篇。

我正在基于PysimpleGUI食谱的两个示例之一制作一个简单的动画。附带的代码当然没有做任何事情。我浏览了许多示例,试图弄清楚如何更新画布,但没有成功。

我的第一次尝试是基于正弦波图示例。我有无尽的while循环和显示功能。图形区域上的显示显示了循环中的第一次迭代,但此后再也不会更新。

显示功能包括:

graph.DrawCircle((i,j)5line_color='black'

第二个相关问题,是否应该使用canvas或graph方法(如正弦波图示例中所示),还是不重要?

我不想让太多的代码淹没读者。如果我可以完成以下工作,那么我可能会获得真正的代码。

import PySimpleGUI as sg
import time

layout = [
    [sg.Canvas(size=(100, 100), background_color='red', key= 'canvas')],
    [sg.T('Change circle color to:'), sg.Button('Red'), sg.Button('Blue')]
    ]

window = sg.Window('Canvas test')
window.Layout(layout)
window.Finalize()

canvas = window.FindElement('canvas')
cir = canvas.TKCanvas.create_oval(50, 50, 100, 100)

while True:
    event, values = window.Read()
    '''
    if event is None:
        break
    if event == 'Blue':
        canvas.TKCanvas.itemconfig(cir, fill="Blue")
    elif event == 'Red':
        canvas.TKCanvas.itemconfig(cir, fill="Red")

    '''

# this is the part that I need to sort out

    for i in range(10):
        if i % 2 == 0:
            canvas.TKCanvas.itemconfig(cir, fill="Blue")

        else:
            canvas.TKCanvas.itemconfig(cir, fill="Red")

        time.sleep(1)

最佳答案

为了使更改在更改后显示在窗口中,您可以调用“读取”或“刷新”。我认为您需要做的就是在底部循环中添加以下行:

window.Refresh()


http://www.PySimpleGUI.org处的文档中:


  刷新()
  导致更改要在屏幕上显示的窗口。
  通常不需要,除非立即进行更改或
  再过一会儿Read就要等一阵子了。

关于python - PysimpleGUI-简单的动画,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54121678/

10-09 19:16