Modifica il metodo di comando per il pulsante Tkinter in Python
-
09-06-2019 - |
Domanda
Creo un nuovo oggetto Button ma non ho specificato il file command
opzione al momento della creazione.Esiste un modo in Tkinter per modificare la funzione del comando (onclick) dopo che l'oggetto è stato creato?
Soluzione
Anche se Eli Courtwright il programma funzionerà bene¹, quello che sembri davvero volere è solo un modo per riconfigurare dopo l'istanziazione qualsiasi attributo che avresti potuto impostare quando hai istanziato².Il modo per farlo è tramite il metodo 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()
¹ "bene" se usi solo il mouse;se ti interessa il tabulazione e l'utilizzo di [Spazio] o [Invio] sui pulsanti, dovrai implementare (duplicando il codice esistente) anche gli eventi di pressione dei tasti.Impostazione del command
opzione attraverso .configure
è molto più semplice.
² l'unico attributo che non può cambiare dopo l'istanziazione è name
.
Altri suggerimenti
Sicuro;basta usare il bind
metodo per specificare la richiamata dopo la creazione del pulsante.Ho appena scritto e testato l'esempio seguente.Puoi trovare un bel tutorial su come farlo su 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()