Вопрос

Я создаю новый объект Button, но не указываю command опция при создании.Есть ли способ в Tkinter изменить функцию command (onclick) после создания объекта?

Это было полезно?

Решение

Хотя Дом Эли Кортрайта программа будет работать нормально 1, хотя, похоже, вам действительно нужен всего лишь способ перенастроить после создания экземпляра любой атрибут, который вы могли бы установить при создании экземпляра2.Как вы это делаете, можно сделать с помощью метода 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()

1 "нормально", если вы используете только мышь;если вы заботитесь о табуляции и использовании [Пробела] или [Enter] на кнопках, то вам также придется реализовать (дублируя существующий код) события нажатия клавиш.Установка command вариант через .configure это намного проще.

2 единственным атрибутом, который не может измениться после создания экземпляра, является name.

Другие советы

Конечно;просто используйте bind способ указать обратный вызов после создания кнопки.Я только что написал и протестировал приведенный ниже пример.Вы можете найти хороший учебник по выполнению этого по адресу 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()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top