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?

Était-ce utile?

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()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top