谢谢阅读。
我正在基于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)
答案 0 :(得分:0)
为了使更改在更改后显示在窗口中,您可以调用“读取”或“刷新”。我认为您需要做的只是在底部循环中,添加以下行:
include: ../shared/analysis_options.yaml
摘自http://www.PySimpleGUI.org上的文档:
刷新() 导致更改要在屏幕上显示的窗口。 通常不需要,除非立即进行更改或 再过一会儿Read就需要一段时间了。
答案 1 :(得分:0)
我找到了答案,那就是window.Read(timeout = 0)。