Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Tkinter: проблема с горячими клавишами [RSS Feed]

#1 Апрель 2, 2017 14:42:39

DemianWolf
Зарегистрирован: 2017-04-01
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter: проблема с горячими клавишами

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



То, что не убивает нас, делает нас сильнее.

Офлайн

#2 Апрель 2, 2017 15:40:12

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Tkinter: проблема с горячими клавишами

Когда Вы перехватываете event в обработчике нажатия, то можете его анализировать. Для клавиш существуют раскладкозависимые (как сказанул) и независимые обработчики. Для этого в перехватчике ловим:

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

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

 #
def call(event):
    print(event.keysym)
    print(event.keycode)
    print(event.keysym_num)

Офлайн

#3 Апрель 2, 2017 17:13:03

DemianWolf
Зарегистрирован: 2017-04-01
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter: проблема с горячими клавишами

Спасибо. Но у меня почему-то не работает.



То, что не убивает нас, делает нас сильнее.

Офлайн

#4 Апрель 2, 2017 17:33:50

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Tkinter: проблема с горячими клавишами

Может приведете ошибку?

Офлайн

#5 Апрель 3, 2017 17:50:45

DemianWolf
Зарегистрирован: 2017-04-01
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter: проблема с горячими клавишами

Просто не реагирует.



То, что не убивает нас, делает нас сильнее.

Офлайн

#6 Апрель 3, 2017 18:15:17

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Tkinter: проблема с горячими клавишами

Упоролся с событием

 #
but.bind("<Control-KeyPress-Any>", call)

Я вот это вот тут вот оставлю :)

Отредактировано 4kpt_V (Апрель 3, 2017 18:16:22)

Офлайн

#7 Апрель 3, 2017 19:41:03

DemianWolf
Зарегистрирован: 2017-04-01
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter: проблема с горячими клавишами

Всё равно ошибку выдаёт:

 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"



То, что не убивает нас, делает нас сильнее.

Офлайн

#8 Апрель 4, 2017 20:57:36

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Tkinter: проблема с горячими клавишами

Проверил. Открыл свой старый проект… Мда. Дока жжет.

 #
but.bind('<Any-KeyPress>', call)
Проверяйте

Офлайн

#9 Апрель 6, 2017 15:22:44

DemianWolf
Зарегистрирован: 2017-04-01
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter: проблема с горячими клавишами

Ура! Всё работает! Спасибо за помощь!



То, что не убивает нас, делает нас сильнее.

Офлайн

  • Начало
  • » GUI
  • » Tkinter: проблема с горячими клавишами[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version