Exécution de fonctions au fil du temps dans Tkinter
Dans la programmation événementielle, l'application s'exécute en continu, répondant aux événements au fur et à mesure qu'ils se produisent. Plutôt que d'exécuter les fonctions de manière séquentielle, la programmation événementielle place les fonctions dans une file d'attente pour les exécuter à des moments précis.
Étude de cas : Animation d'un rectangle clignotant
Pour créer un rectangle clignotant animation dans Tkinter, nous pouvons définir une fonction pour l'animation et planifier son exécution à intervalles réguliers. Voici comment aborder le problème :
1. Définir la fonction d'animation :
def blink(rect, canvas): current_color = canvas.itemcget(rect, "fill") new_color = "red" if current_color == "white" else "white" canvas.itemconfigure(rect, fill=new_color)
Cette fonction fait basculer la couleur du rectangle entre le rouge et le blanc.
2. Planifier la fonction :
Pour faire clignoter le rectangle à plusieurs reprises, nous planifions la fonction de clignotement pour qu'elle s'exécute après des intervalles spécifiés :
root.after(1000, blink, rect, canv) root.after(2000, blink, rect, canv) root.after(3000, blink, rect, canv)
Après une, deux et trois secondes, le la couleur du rectangle changera en conséquence.
3. Itérer l'animation (facultatif) :
Pour que l'animation s'exécute indéfiniment, nous pouvons appeler la fonction de clignotement en elle-même :
def blink(rect, canvas): ... canvas.after(1000, blink, rect, canvas)
Cette approche continue l'animation indéfiniment jusqu'à son arrêt la condition est remplie (par exemple, un clic sur un bouton).
4. Approche basée sur les classes (Facultatif) :
Pour les programmes plus volumineux, il est recommandé d'organiser le code en classe :
from tkinter import * classMyApp(Tk): def __init__(self): ... self.start_button = Button(self, text="start blinking", command=self.start_blinking) ... def start_blinking(self): ... canvas.after(1000, self.blink)
Cette approche encapsule la logique d'animation au sein d'une classe, ce qui facilite la gestion.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!