Gérer la concurrence avec Tkinter et la manipulation du temps
Contexte :
Dans Tkinter, des retards peuvent être introduits en utilisant la fonction time.sleep(). Cependant, cette approche bloque l'exécution et peut conduire à un comportement involontaire.
Question :
Un utilisateur tente de supprimer du texte dans une zone de texte après un délai de 5 secondes, mais le programme reste inactif à la place. De plus, ils demandent comment geler la zone de texte lors de l'exécution d'un autre code.
Réponse :
Éviter time.sleep() :
À la place d'utiliser time.sleep(), pensez à utiliser la méthode after dans Tkinter. Cette méthode vous permet de planifier l'exécution d'une fonction de rappel après un délai spécifique, libérant ainsi le thread principal pour d'autres tâches.
Implémentation d'un délai :
Modifiez le script comme suit pour introduire un délai de 5 secondes avant de supprimer le texte :
from time import time from Tkinter import * def empty_textbox(): textbox.delete("1.0", END) root = Tk() frame = Frame(root, width=300, height=100) textbox = Text(frame) frame.pack_propagate(0) frame.pack() textbox.pack() textbox.insert(END, 'This is a test') textbox.after(5000, empty_textbox) root.mainloop()
Geler la zone de texte :
Pour geler la zone de texte, vous pouvez utiliser la méthode config() pour définir le Attribut 'state' à 'disabled' :
textbox.config(state='disabled')
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!