Tkinter, l'exécution des fonctions au fil du temps

Je suis nouveau sur tkinter, et je suis à essayer de comprendre comment le contrôle de flux de travaux.

Je veux afficher un rectangle et faire clignoter trois fois. J'ai écrit ce code, mais ça ne fonctionne pas. Je suppose que c'est parce que blink est exécutée avant mainloop, et il ne fait pas de dessiner n'importe quoi. Si oui, comment puis-je échanger le contrôle de flux entre blink et mainloop pour le faire fonctionner? Je vous remercie à l'avance!

Mon code:

from tkinter import *
from time import *

def blink(rectangle, canvas):
    for i in range(3):
        canvas.itemconfigure(rectangle, fill = "red")
        sleep(1)
        canvas.itemconfigure(rectangle, fill = "white")
        sleep(1)

root = Tk()
fr = Frame(root)
fr.pack()
canv = Canvas(fr, height = 100, width = 100)
canv.pack()
rect = canv.create_rectangle(25, 25, 75, 75, fill = "white")
blink(rect, canv)
root.mainloop()

OriginalL'auteur wazabit | 2012-02-18