Concurrence dans Tkinter à l'aide de la méthode « après »
Lorsque vous travaillez avec des applications GUI dans Tkinter, il est crucial de maintenir la réactivité lors de l'exécution d'autres tâches. Un scénario courant est la nécessité de manipuler les éléments de l’interface utilisateur après un certain délai. Cependant, l'utilisation de 'time.sleep' peut entraîner le gel de l'interface utilisateur.
Pour résoudre ce problème, Tkinter fournit la méthode 'after', qui vous permet de planifier l'appel d'une fonction après un délai spécifié, sans bloquer la boucle de l'événement principal.
Considérez le code suivant, où une zone de texte est mise à jour après 5 secondes à l'aide de 'time.sleep' :
def empty_textbox(): textbox.insert(END, 'This is a test') sleep(5) textbox.delete("1.0", END)
Dans ce code, la 'empty_textbox ' inclut un appel à 'sleep(5)', provoquant une pause du programme pendant 5 secondes. Pendant ce temps, l'interface utilisateur ne répond pas, ce qui gêne l'interaction de l'utilisateur.
Utilisation de la méthode « après »
Au lieu d'utiliser « time.sleep », nous pouvons utiliser la méthode « après » pour atteindre notre objectif. Voici une version modifiée du code :
def empty_textbox(): textbox.delete("1.0", END) textbox.insert(END, 'This is a test') textbox.after(5000, empty_textbox)
Dans ce code, la méthode 'after' est utilisée pour planifier l'appel de la fonction 'empty_textbox' après un délai de 5 000 millisecondes (5 secondes). Cela permet au programme de poursuivre d'autres tâches pendant que la fonction planifiée attend d'être exécutée. Une fois le délai écoulé, la fonction 'empty_textbox' est invoquée, supprimant le texte de la zone de texte.
En utilisant la méthode 'after', vous pouvez obtenir le comportement souhaité sans bloquer l'exécution du programme ni geler le Interface utilisateur. Cela garantit une interface réactive et conviviale tout en permettant des actions chronométrées.
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!