Список последовательностей, доступных для каждого виджета TKinter

Есть ли справочный сайт, содержащий для каждого виджета Tkinter список всех доступных последовательностей для привязки?

Например, я могу привязать обратный вызов к TreeView с помощью этого кода:

tree.bind("<<TreeviewSelect>>", selection_changed)

Однако я не могу найти хороший ресурс, в котором перечислены все возможные события, которым может быть назначен обратный вызов.


person frr171    schedule 04.05.2013    source источник


Ответы (1)


Вы можете использовать этот код для получения событий для некоторых виджетов (кроме виртуальных событий):

from itertools import chain
def get_events(widget):
    return set(chain.from_iterable(widget.bind_class(cls) for cls in widget.bindtags()))

root = Tk()
a = get_events(Button())
print(a)
root.destroy()

>>> {'<KeyRelease-Alt_R>', '<Enter>', '<Key-space>', '<Button-1>', '<Key-Alt_R>', '<KeyRelease-F10>', '<<PrevWindow>>', '<Alt-Key>', '<Alt-KeyRelease>', '<ButtonRelease-1>', '<Leave>', '<KeyRelease-Alt_L>', '<Key-Alt_L>', '<Key-F10>', '<Key-Tab>'}

И ссылки: Основной список всех событий Tkinter?

person kalgasnik    schedule 04.05.2013
comment
+1: это удивительно сложная проблема; Tk имеет сложную модель событий внутри (которая выросла за счет поддержки очень широкого спектра приложений). Фактические привязки также зависят от платформы (или, что еще хуже, если вы делаете что-то глупое, например, включаете традиционный режим совместимости с Motif; не делайте этого). Также имейте в виду, что некоторые виджеты (особенно холсты) могут иметь привязки к отдельным элементам внутри. - person Donal Fellows; 04.05.2013
comment
Спасибо за помощь! Я думаю, что со всеми причудами Tkinter для меня было бы лучше переключиться на wxPython. - person frr171; 05.05.2013