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 d'événement principale.
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 fonction '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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3