Ключевое событие windows tkinter

Что такое событие для ключа Windows в Tkinter? Я использую Linux, но мне нужны ответы как для Linux, так и для Windows. Если у Mac есть похожий ключ, не стесняйтесь сообщить мне привязку для него. Я представляю, что для левой и правой клавиш окна есть разные события.

Клавиша Windows, похоже, не регистрируется в моей программе, которая должна улавливать все нажатия клавиш и выводить их на экран. Я не нашел ответа в своих поисковых запросах в Интернете. Я видел ссылки на Mod4, связанные с ключом Windows, но это неправильное событие Tkinter (так говорит моя ошибка):

_tkinter.TclError: bad event type or keysym "Mod4"

Например. следующий код получает указанную выше ошибку.

textWidget.bind("<Mod4>", self.myFunction)

person Brōtsyorfuzthrāx    schedule 17.06.2014    source источник
comment
Не могли бы вы опубликовать код, в котором пытаетесь создать привязку?   -  person Brionius    schedule 18.06.2014
comment
У меня нет кода, потому что я не знаю имени события, которое нужно использовать. Если вы говорите о Mod4 и думаете, что он должен успешно связывать ключ Windows (я не знаю, должен ли он быть), я добавлю это к своему вопросу.   -  person Brōtsyorfuzthrāx    schedule 19.06.2014


Ответы (2)


Покопавшись, я обнаружил следующее: https://www.tcl.tk/man/tcl8.6/TkCmd/keysyms.htm Это: <Win_L>, <Win_R>, похоже, правильные ключи для Windows. Протестировано в Python 3.4 на Win7.

person Von Pittman    schedule 06.01.2016

Хорошо, я нашел ответ. Это было довольно просто, и я не знаю, почему я нигде не нашел его в Интернете.

Событие называется Super_L (для левой клавиши Windows в Linux). Правый ключ Windows - Super_R. Однако я не знаю, работают ли эти события в Windows и Mac.

Во всяком случае, причина, по которой мой искатель нажатия клавиш событий не нашел его, заключалась в том, что у меня был скрипт, запущенный при запуске моего компьютера, который определял клавишу создания как левую клавишу Windows. Так что по какой-то причине он не зарегистрировался.

person Brōtsyorfuzthrāx    schedule 30.06.2014