Захват определенной комбинации клавиш в то время как в графическом интерфейсе - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь сделать снимок, когда пользователь нажимает Ctrl + Enter на своей клавиатуре, находясь в моем приложении:

class UI(Widget):
    def __init__(self, **kwargs):
        super(UI, self).__init__(**kwargs)
        self._keyboard = Window.request_keyboard(self._keyboard_closed, self)
        self._keyboard.bind(on_key_down=self._on_keyboard_down)

    def _keyboard_closed(self):
        self._keyboard.unbind(on_key_down=self._on_keyboard_down)
        self._keyboard = None

    def _on_keyboard_down(self, keyboard, keycode, text, modifiers):
        if keycode[1] == 'w':
            print("yes")
            return False
        return True


class UIApp(App):
    def build(self):
        return UI()

UIApp().run()

Я понимаю, что этот код будет захватывать w, но он даже этого не делает. Или, по крайней мере, да не выводится на консоль. Мой интерфейс:

#:kivy 1.0.9

<UI>:
    title: 'InputDialog'
    auto_dismiss: False

    RelativeLayout:
        ...

1 Ответ

0 голосов
/ 08 марта 2019

Проверьте modifiers[0] == 'ctrl' и keycode[0] == 13 или text is None:

def _on_keyboard_down(self, keyboard, keycode, text, modifiers):
    if len(modifiers) > 0 and modifiers[0] == 'ctrl' and keycode[0] == 13:     
        # ctrl + enter pressed
        print("\nThe key", keycode, "have been pressed")
        print(" - text is %r" % text)
        print(" - modifiers are %r" % modifiers)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...