Maison >développement back-end >Tutoriel Python >En quoi les boucles « mainloop », « update » et « update_idletasks » de Tkinter diffèrent-elles, et quand devez-vous utiliser « after » au lieu d'une boucle « while » pour les animations ?
Dans Tkinter, la méthode mainloop est utilisée pour démarrer la boucle d'événements principale de l'application. Lorsqu'il est appelé, il entre dans une boucle infinie qui attend et traite les événements utilisateur tels que les clics de souris, les pressions sur le clavier et le redimensionnement des fenêtres. En vérifiant continuellement les événements, mainloop garantit que l'interface utilisateur graphique (GUI) reste réactive aux entrées de l'utilisateur.
Dans la boucle d'événements de mainloop, la fenêtre principale de l'application (généralement une instance Tk) surveille l'événement du système d'exploitation sous-jacent. file d'attente. Lorsqu'un événement se produit, tel qu'un clic de souris ou un redimensionnement de fenêtre, les fonctions de rappel de la fenêtre sont déclenchées pour gérer le traitement de l'événement.
Tkinter propose également deux d'autres méthodes, update et update_idletasks, qui servent à des fins différentes de celles mainloop.
L'exemple de code fourni utilise une boucle while pour mettre à jour en permanence le canevas et simuler le mouvement de une balle. En appelant update_idletasks() et update() dans la boucle, cela imite le comportement de mainloop. Bien que cette approche puisse fonctionner efficacement, il existe une meilleure alternative qui ne nécessite pas de boucle while explicite.
La méthode after de Tkinter vous permet de planifier l'exécution d'une fonction après un délai spécifié. En utilisant after, vous pouvez remplacer la boucle while et obtenir un effet d'animation non bloquant comme suit :
def draw(self): self.canvas.move(self.id, 0, -1) self.canvas.after(50, self.draw) # Schedule draw() to be invoked after 50 milliseconds
Dans cet extrait de code modifié, la méthode draw se programme pour être à nouveau invoquée après un délai de 50 millisecondes. via la méthode after. Cela permet à l'interface graphique de rester réactive aux entrées de l'utilisateur pendant l'exécution des animations.
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!