谢谢您阅读此篇。
我正在基于PysimpleGUI食谱的两个示例之一制作一个简单的动画。附带的代码当然没有做任何事情。我浏览了许多示例,试图弄清楚如何更新画布,但没有成功。
我的第一次尝试是基于正弦波图示例。我有无尽的while循环和显示功能。图形区域上的显示显示了循环中的第一次迭代,但此后再也不会更新。
显示功能包括:graph.DrawCircle((i,j)
,5
,line_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/