Форум сайта python.su
Здравствуйте! Я разрабатываю текстовый редактор на Python 3 (Tkinter). Хотел включить горячие клавиши, но они почему-то работают только на англ. раскладке. Когда пробовал вводить root.bind(“<Control-Я>”, undo), выдавал ошибку: bad event type or keysym “<Я>”. Как можно (и можно ли вообще) включить поддержку русской раскладки. Заранее спасибо.
Офлайн
Когда Вы перехватываете event в обработчике нажатия, то можете его анализировать. Для клавиш существуют раскладкозависимые (как сказанул) и независимые обработчики. Для этого в перехватчике ловим:
# but.bind("Control+Any", call)
# def call(event): print(event.keysym) print(event.keycode) print(event.keysym_num)
Офлайн
Спасибо. Но у меня почему-то не работает.
Офлайн
Может приведете ошибку?
Офлайн
Просто не реагирует.
Офлайн
Упоролся с событием
# but.bind("<Control-KeyPress-Any>", call)
Отредактировано 4kpt_V (Апрель 3, 2017 18:16:22)
Офлайн
Всё равно ошибку выдаёт:
Traceback (most recent call last): File "<pyshell#29>", line 1, in <module> root.bind('<Control-KeyPress-Any>', print) File "C:\Python33\lib\tkinter\__init__.py", line 1006, in bind return self._bind(('bind', self._w), sequence, func, add) File "C:\Python33\lib\tkinter\__init__.py", line 961, in _bind self.tk.call(what + (sequence, cmd)) _tkinter.TclError: bad event type or keysym "Any"
Офлайн
Проверил. Открыл свой старый проект… Мда. Дока жжет.
# but.bind('<Any-KeyPress>', call)
Офлайн
Ура! Всё работает! Спасибо за помощь!
Офлайн