2008-09-16 11 views

Répondre

15

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.

1

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() 
+1

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

+3

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. –

Questions connexes