Как определить, когда меняются OptionMenu или Checkbutton? - PullRequest
4 голосов
/ 15 марта 2011

Мое приложение tkinter имеет несколько элементов управления, и я хотел бы знать, когда в них происходят какие-либо изменения, чтобы я мог обновлять другие части приложения.

Есть ли что-нибудь, что я могу сделать, кроме написания функции обновления и зацикливания в конце:

root.after(0, updaterfunction) 

Этот метод работал в прошлом, но я боюсь, что он может быть дорогим, если есть много вещей, чтобы проверить.

Даже если бы я использовал этот метод, смогу ли я экономить ресурсы, обновляя только элементы с измененными переменными? Если это так, пожалуйста, поделитесь, как, поскольку я не уверен, как обнаружить конкретные изменения за пределами функции обновления.

Ответы [ 2 ]

8 голосов
/ 15 марта 2011

Многие элементы управления tkinter могут быть связаны с переменной. Для них вы можете поместить трассировку в переменную так, чтобы какая-либо функция вызывалась при каждом изменении переменной.

См. http://effbot.org/tkinterbook/variable.htm для получения дополнительной информации о переменных трассировках. Они являются одной из многих замечательных, новых функций ТК.

3 голосов
/ 07 марта 2016

Чтобы событие произошло при выборе, установите опцию команды для OptionMenu

ex.

def OptionMenu_SelectionEvent(event): # I'm not sure on the arguments here, it works though
    ## do something
    pass

var = StringVar()
var.set("one")
options = ["one", "two", "three"]
OptionMenu(frame, var, *(options), command = OptionMenu_SelectionEvent).pack()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...