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?

È stato utile?

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()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top