История изменений
Исправление den73, (текущая версия) :
Как в TKinter - не знаю, а в самом tk это команды bind и bindtag. Непосрественно акселераторы создаются командой bind, ты можешь привязать непосредственно к виджету или к «пакету сочетаний кнопок», который называется bindtag. Смысл bindtag-а - в том, что он позволяет задавать приоритеты для биндингов. Это важно, поскольку обработчик Ctrl-O сам по себе отловит и Ctrl-Shift-O, и Ctrl-Alt-O. Поэтому я завожу несколько биндтагов - DoubleMod${ИмяВиджета} для сочетаний с двумя модификаторами, например, для <Control-Shift-H>; SingleMod${ИмяВиджета} для сочетаний с одним, например, для <Control-Key-O>; и NoMod${ИмяВиджета} для простых кнопок, таких, как <Key-F1>. Далее биндтаги привызываются к виджету с помощью команды bindtag, и их приоритет - по порядку указания, т.е. сначала нужно поставиться DoubleMod, потом SingleMod, потом NoMod.
Дальнейшие нюансы: есть проблемы с кириллицей, у меня есть функция ::clcon_key::b , но она довольно сложная. Ещё хуже то, что в последних версиях они норвят сломать международные буквы вообще и будет невозможно отловить некие (не помню какие) сочетания с кириллицей - я пропатчил tk и пользуюсь своим, но мне не нравится эта ситуация. Если для тебя это актуально - спрашивай.
Вот один из моих файлов, но надо вообще тебе скачать весь исходник, т.к. там всё делается не напрямую, а через обёртки.
Исправление den73, :
Как в TKinter - не знаю, а в самом tk это команды bind и bindtag. Непосрественно акселераторы создаются командой bind, ты можешь привязать непосредственно к виджету или к «пакету сочетаний кнопок», который называется bindtag. Смысл bindtag-а - в том, что он позволяет задавать приоритеты для биндингов. Это важно, поскольку обработчик Ctrl-O сам по себе отловит и Ctrl-Shift-O, и Ctrl-Alt-O. Поэтому я завожу несколько биндтагов - DoubleMod${ИмяВиджета} для сочетаний с двумя модификаторами, например, для <Control-Shift-H>; SingleMod${ИмяВиджета} для сочетаний с одним, например, для <Control-Key-O>; и NoMod${ИмяВиджета} для простых кнопок, таких, как <Key-F1>. Далее биндтаги привызываются к виджету с помощью команды bindtag, и их приоритет - по порядку указания, т.е. сначала нужно поставиться DoubleMod, потом SingleMod, потом NoMod.
Дальнейшие нюансы: есть проблемы с кириллицей, у меня есть функция ::clcon_key::b , но она сложная, зависит от платформы и толком не работает. Ещё хуже то, что в последних версиях они норвят сломать международные буквы вообще и будет невозможно отловить некие (не помню какие) сочетания с кириллицей. Если для тебя это актуально - спрашивай.
Вот один из моих файлов, но надо вообще тебе скачать весь исходник, т.к. там всё делается не напрямую, а через обёртки.
Исправление den73, :
Как в TKinter - не знаю, а в самом tk это команды bind и bindtag. Непосрественно акселераторы создаются командой bind, ты можешь привязать непосредственно к виджету или к «пакету сочетаний кнопок», который называется bindtag. Смысл bindtag-а - в том, что он позволяет задавать приоритеты для биндингов. Это важно, поскольку обработчик Ctrl-O сам по себе отловит и Ctrl-Shift-O, и Ctrl-Alt-O. Поэтому я завожу несколько биндтагов - DoubleMod${ИмяВиджета} для сочетаний с двумя модификаторами, например, <Control-Shift-H>; SingleMod${ИмяВиджета} для сочетаний с одним, например, <Control-Key-O>; и NoMod${ИмяВиджета} для простых кнопок. Далее биндтаги привызываются к виджету с помощью команды bindtag, и их приоритет - по порядку указания, т.е. сначала нужно поставиться DoubleMod, потом SingleMod, потом NoMod.
Дальнейшие нюансы: есть проблемы с кириллицей, у меня есть функция ::clcon_key::b , но она сложная, зависит от платформы и толком не работает. Ещё хуже то, что в последних версиях они норвят сломать международные буквы вообще и будет невозможно отловить некие (не помню какие) сочетания с кириллицей. Если для тебя это актуально - спрашивай.
Вот один из моих файлов, но надо вообще тебе скачать весь исходник, т.к. там всё делается не напрямую, а через обёртки.
Исправление den73, :
Как в TKinter - не знаю, а в самом tk это команды bind и bindtag. Непосрественно акселераторы создаются командой bind, ты можешь привязать непосредственно к виджету или к «пакету сочетаний кнопок», который называется bindtag. Смысл bindtag-а - в том, что он позволяет задавать приоритеты для биндингов. Это важно, поскольку обработчик Ctrl-O сам по себе отловит и Ctrl-Shift-O, и Ctrl-Alt-O. Поэтому я завожу несколько биндтагов - DoubleMod${ИмяВиджета} для сочетаний с двумя модификаторами, например, <Control-Shift-H>,, SingleMod${ИмяВиджета} для сочетаний с одним, например, <Control-Key-O> и NoMod${ИмяВиджета} для простых кнопок. Далее биндтаги привызываются к виджету с помощью команды bindtag, и их приоритет - по порядку указания, т.е. сначала нужно поставиться DoubleMod, потом SingleMod, потом NoMod.
Дальнейшие нюансы: есть проблемы с кириллицей, у меня есть функция ::clcon_key::b , но она сложная, зависит от платформы и толком не работает. Ещё хуже то, что в последних версиях они норвят сломать международные буквы вообще и будет невозможно отловить некие (не помню какие) сочетания с кириллицей. Если для тебя это актуально - спрашивай.
Вот один из моих файлов, но надо вообще тебе скачать весь исходник, т.к. там всё делается не напрямую, а через обёртки.
Исходная версия den73, :
Как в TKinter - не знаю, а в самом tk это команды bind и bindtag. Непосрественно акселераторы создаются командой bind, ты можешь привязать к виджету или к «пакету биндингов», который называется bindtag. Смысл bindtag-а - в том, что он позволяет задавать приоритеты для биндингов. Это важно, поскольку обработчик Ctrl-O сам по себе отловит и Ctrl-Shift-O, и Ctrl-Alt-O. Поэтому я завожу несколько биндтагов - DoubleMod${ИмяВиджета} для сочетаний с двумя модификаторами, например, <Control-Shift-H>,, SingleMod${ИмяВиджета} для сочетаний с одним, например, <Control-Key-O> и NoMod${ИмяВиджета} для простых кнопок. Далее биндтаги привызываются к виджету с помощью команды BindTag, и их приоритет - по порядку указания, т.е. сначала нужно поставиться DoubleMod, потом SingleMod, потом NoMod.
Дальнейшие нюансы: есть проблемы с кириллицей, у меня есть функция ::clcon_key::b , но она сложная, зависит от платформы и толком не работает. Ещё хуже то, что в последних версиях они норвят сломать международные буквы вообще и будет невозможно отловить некие (не помню какие) сочетания с кириллицей. Если для тебя это актуально - спрашивай.
Вот один из моих файлов, но надо вообще тебе скачать весь исходник, т.к. там всё делается не напрямую, а через обёртки.