0

我想在 Kivy (Ctrl + O) 中创建一个可以附加事件的键绑定。我看到 Kivy Inspector 模块正在做类似的事情,但我不确定如何复制该功能。

我想在所有 Kivy 应用程序上进行键绑定工作,所以我猜它必须绑定到窗口/根小部件。

有没有人这样做过?谢谢!

4

1 回答 1

4

正如您所说,检查器模块完全符合您的要求,所以您不打开代码并找出答案吗?毕竟是 Python :)。

这是文件inspector.py

搜索ctrl检查员使用的快捷方式是 'ctrl+e' get's us this .::

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 是 window 的一个实例,因为我们要全局绑定到键盘快捷键,我们将绑定到on_keyboardWindow 的事件。

Window的这个on_keyboard事件是什么?让我们在 kivy 文档中搜索。window

第四个链接kivy.core.window.Keyboard(Python 类,在 Window 中)似乎很有趣。在该链接之后,他们似乎甚至有一个使用 Window.keyboard 的示例,并在此处on_keyboard解释了该事件。

按照上面的所有资源,您应该能够全局绑定到快捷方式以便对其做出反应。

希望这是有帮助的。

于 2013-03-28T23:08:58.317 回答