Méthode de commande Change pour Tkinter Button en Python
-
09-06-2019 - |
Question
Je crée un nouvel objet Button mais je n’ai pas spécifié l’option command
lors de la création. Y at-il un moyen dans Tkinter de changer la fonction de commande (onclick) après la création de l’objet?
La solution
Bien que le programme d'Eli Courtwright fonctionne correctement # 185 ;, ce que vous semblez vraiment vouloir, cependant, n’est qu’un moyen de reconfigurer, après l’instanciation, tout attribut que vous auriez pu définir lors de l’instanciation & # 178 ;. Pour ce faire, utilisez la méthode configure ().
from Tkinter import Tk, Button
def goodbye_world():
print "Goodbye World!\nWait, I changed my mind!"
button.configure(text = "Hello World!", command=hello_world)
def hello_world():
print "Hello World!\nWait, I changed my mind!"
button.configure(text = "Goodbye World!", command=goodbye_world)
root = Tk()
button = Button(root, text="Hello World!", command=hello_world)
button.pack()
root.mainloop()
& # 185; "bien" si vous utilisez uniquement la souris; si vous vous souciez de la tabulation et de l'utilisation des boutons [Espace] ou [Entrée], vous devrez également implémenter (dupliquer le code existant) les événements de pression de touche. La définition de l'option command
via .configure
est beaucoup plus facile.
& # 178; le seul attribut qui ne puisse pas changer après l'instanciation est nom
.
Autres conseils
bien sûr; utilisez simplement la méthode bind
pour spécifier le rappel après la création du bouton. Je viens d'écrire et de tester l'exemple ci-dessous. Vous pouvez trouver un bon tutoriel sur cette opération à l'adresse http: // www.pythonware.com/library/tkinter/introduction/events-and-bindings.htm
from Tkinter import Tk, Button
root = Tk()
button = Button(root, text="Click Me!")
button.pack()
def callback(event):
print "Hello World!"
button.bind("<Button-1>", callback)
root.mainloop()