Je crée un nouvel objet Button mais je n'ai pas spécifié l'option command
lors de la création. Est-il possible dans Tkinter de changer la commande (onclick) après que l'objet a été créé?Commande de modification Méthode du bouton Tkinter dans Python
Répondre
Bien que Eli Courtwright's programme fonctionnera fine¹, ce que vous semblez vraiment vouloir bien est juste un moyen de reconfigurer après instanciation tout attribut que vous pourriez avoir défini lorsque vous instantiated² . C'est par la méthode configure() que vous le faites.
¹ "fine" si vous utilisez uniquement la souris; Si vous vous souciez de la tabulation et que vous utilisez les boutons [Espace] ou [Entrée], vous devrez également implémenter (dupliquer le code existant) les événements de frappe. La définition de l'option command
à travers .configure
est beaucoup plus facile. ² le seul attribut qui ne peut pas changer après l'instanciation est name
.
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 tutoriel bien de faire cela à 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()
L'option de config de commande est ce qui est généralement utilisé pour les appuis sur les boutons. La fonction de rappel n'a pas besoin d'un argument d'événement. – tzot
L'utilisation d'une liaison n'est pas une solution particulièrement bonne IMO. C'est exactement ce à quoi sert l'option -command. De plus, en faisant cela dans une liaison, vous perdez la possibilité d'appeler le rappel via la traversée du clavier, sauf si vous ajoutez également des raccourcis clavier. Il devient assez salissant assez rapidement, alors restez avec -command. –