Изменить метод команды для кнопки Tkinter в Python - PullRequest
6 голосов
/ 16 сентября 2008

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

Ответы [ 2 ]

21 голосов
/ 16 сентября 2008

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

fine «хорошо», если вы используете только мышь; Если вы хотите использовать табуляцию и использовать [Пробел] или [Ввод] на кнопках, вам придется также реализовывать (дублируя существующий код) события нажатия клавиш. Настроить опцию command через .configure гораздо проще.

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

1 голос
/ 16 сентября 2008

Конечно; просто используйте метод 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...