Спасибо, что прочитали это.
Я работаю над простой анимацией, основанной на одном из двух примеров из кулинарной книги PysimpleGUI. Прикрепленный код, конечно, ничего не делает. Я просмотрел много примеров, пытаясь выяснить, как обновить холст, но безуспешно.
Моя первая попытка была основана на примере графика синусоидальной волны. У меня есть бесконечный цикл и функция отображения. Дисплей в области графика показывает первую итерацию цикла, но после этого никогда не обновляется.
Функция отображения содержит:
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)