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?

Foi útil?

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()
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top