Как создать привязку клавиш (Ctrl + O) в Kivy?

Я хочу создать привязку клавиш в Kivy (Ctrl + O), к которой я могу прикрепить событие. Я вижу, что модуль Kivy Inspector делает что-то подобное, но я не уверен, как воспроизвести эту функциональность.

Я хотел бы, чтобы привязка клавиш работала во всех приложениях Kivy, поэтому я предполагаю, что она должна быть привязана к виджету окна/корня.

Кто-нибудь делал это раньше? Спасибо!


person Scott    schedule 28.03.2013    source источник


Ответы (1)


Как вы говорите, модуль инспектора делает именно то, что вы ищете, поэтому вы не открываете код и не выясняете? В конце концов, это Python :).

Это файл spector.py.

Поиск ctrl в качестве ярлыка, используемого инспектором, — это «ctrl+e», чтобы получить нас "nofollow">это.::

def keyboard_shortcut(self, win, scancode, *largs):
    modifiers = largs[-1]
    if scancode == 101 and modifiers == ['ctrl']:
        self.activated = not self.activated
        ...
        ...
        ...

Кажется, что это слушает клавиатуру и проверяет, соответствует ли ввод «ctrl» и «e»

if scancode == 101 and modifiers == ['ctrl']:

Однако мы не знаем, как/откуда вызывается эта функция? Итак, давайте искать имя функции::

 `keyboard_shortcut`

Получаем это.

win.bind(children=ctx.inspector.on_window_children,
        on_keyboard=ctx.inspector.keyboard_shortcut)

win — это экземпляр окна, так как мы хотим глобально привязаться к сочетанию клавиш, мы привязываемся к событию on_keyboard окна.

Что это за событие on_keyboard окна? Давайте поищем window в документации kivy.

Четвертая ссылка kivy.core. window.Keyboard (класс Python в Window) кажется интересным. По этой ссылке кажется, что у них даже есть пример использования Window.keyboard, а также объяснение события on_keyboard здесь.

Следуя всем вышеперечисленным ресурсам, вы сможете глобально привязаться к ярлыку, чтобы реагировать на него.

Надеюсь, это поможет.

person qua-non    schedule 28.03.2013