Maison > développement back-end > Tutoriel Python > Comment puis-je créer des animations de rectangles clignotants à l'aide de la méthode « after() » de Tkinter ?

Comment puis-je créer des animations de rectangles clignotants à l'aide de la méthode « after() » de Tkinter ?

Mary-Kate Olsen
Libérer: 2024-12-21 06:30:10
original
396 Les gens l'ont consulté

How Can I Create Blinking Rectangle Animations Using Tkinter's `after()` Method?

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)
Copier après la connexion

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)
Copier après la connexion

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)
Copier après la connexion

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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal