Я использую Tkinter (2.7), чтобы попытаться создать конечный цикл, который рисует, а затем стирает прямоугольник на виджете холста, например, его мигание. После нескольких дней перебора всего, что можно было найти, я вынужден обратиться за помощью.
Эта проблема:
Приведенный ниже код создает и удаляет прямоугольник внутри программы, но не отображает его в главном окне (корне).
from Tkinter import *
root = Tk()
def make():
canvas.create_rectangle(20,20,60,60,fill="pink")
root.after(1000)
def unmake():
canvas.delete(ALL)
root.after(1000)
def loop():
count = 0
while count < 5:
make()
unmake()
count += 1
canvas = Canvas(root,width=100,height=100)
canvas.pack()
loop()
root.mainloop()
Что я пробовал:
Если я помещаю инструкцию печати в функции make() и unmake(), они печатаются с интервалом в 1 секунду, поэтому я знаю, что метод .after() работает.
Если я создам бесконечный цикл с функцией make(), вызывающей unmake() и снова вызывающей make(), это действительно отобразит мигающий прямоугольник в главном окне (корне);
def make():
box = canvas.create_rectangle(20,20,60,60,fill="pink")
root.after(1000,unmake)
def unmake():
canvas.delete(ALL)
root.after(1000,make)
Если кто-то знает, почему Tkinter ведет себя таким образом, я был бы очень признателен за руководство. Спасибо.