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

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

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

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

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


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


Ответы (1)


arrow_upward
5
arrow_downward

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

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