Alterar método de comando para botão Tkinter em Python
-
09-06-2019 - |
Pergunta
Eu criei um novo objeto Button, mas não especifiquei o command
opção na criação.Existe uma maneira no Tkinter de alterar a função do comando (onclick) após a criação do objeto?
Solução
No entanto Eli Courtwright O programa funcionará bem¹, o que você realmente parece querer é apenas uma maneira de reconfigurar após a instanciação qualquer atributo que você poderia ter definido quando instanciado².Como fazer isso é por meio do 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()
¹ "tudo bem" se você usar apenas o mouse;se você se preocupa em tabular e usar [Espaço] ou [Enter] nos botões, também terá que implementar (duplicar o código existente) eventos de pressionamento de tecla.Configurando o command
opção através .configure
é muito mais fácil.
² o único atributo que não pode ser alterado após a instanciação é name
.
Outras dicas
Claro;basta usar o bind
método para especificar o retorno de chamada após a criação do botão.Acabei de escrever e testar o exemplo abaixo.Você pode encontrar um bom tutorial sobre como fazer isso em 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()