Найти - Пользователи
Полная версия: Tkinter: проблема с горячими клавишами
Начало » GUI » Tkinter: проблема с горячими клавишами
1
DemianWolf
Здравствуйте! Я разрабатываю текстовый редактор на Python 3 (Tkinter). Хотел включить горячие клавиши, но они почему-то работают только на англ. раскладке. Когда пробовал вводить root.bind(“<Control-Я>”, undo), выдавал ошибку: bad event type or keysym “<Я>”. Как можно (и можно ли вообще) включить поддержку русской раскладки. Заранее спасибо.
4kpt_V
Когда Вы перехватываете event в обработчике нажатия, то можете его анализировать. Для клавиш существуют раскладкозависимые (как сказанул) и независимые обработчики. Для этого в перехватчике ловим:

 #
but.bind("Control+Any", call)

А в обработчике по event уже отслеживаем

 #
def call(event):
    print(event.keysym)
    print(event.keycode)
    print(event.keysym_num)
DemianWolf
Спасибо. Но у меня почему-то не работает.
4kpt_V
Может приведете ошибку?
DemianWolf
Просто не реагирует.
4kpt_V
Упоролся с событием
 #
but.bind("<Control-KeyPress-Any>", call)

Я вот это вот тут вот оставлю :)
DemianWolf
Всё равно ошибку выдаёт:
 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"
4kpt_V
Проверил. Открыл свой старый проект… Мда. Дока жжет.

 #
but.bind('<Any-KeyPress>', call)
Проверяйте
DemianWolf
Ура! Всё работает! Спасибо за помощь!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB