Pregunta

Creo un nuevo objeto Botón pero no especificé el command opción al momento de la creación.¿Hay alguna forma en Tkinter de cambiar la función del comando (al hacer clic) después de que se haya creado el objeto?

¿Fue útil?

Solución

Aunque Eli Courtwright El programa funcionará bien¹, aunque lo que realmente parece querer es solo una forma de reconfigurar después de la creación de instancias cualquier atributo que pudiera haber establecido cuando creó la instancia².La forma de hacerlo es mediante el método 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()

¹ "bien" si usas sólo el mouse;Si le interesa tabular y usar [Espacio] o [Entrar] en los botones, entonces tendrá que implementar (duplicar el código existente) eventos de pulsación de teclas también.Configurando el command opción a través de .configure es mucho más fácil.

² el único atributo que no puede cambiar después de la creación de instancias es name.

Otros consejos

Seguro;solo usa el bind método para especificar la devolución de llamada después de que se haya creado el botón.Acabo de escribir y probar el siguiente ejemplo.Puedes encontrar un buen tutorial sobre cómo hacer esto en 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()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top