Cambiar método de comando para el botón Tkinter en Python
-
09-06-2019 - |
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?
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()