0

イベントをアタッチできるキーバインド (Ctrl + O) を Kivy で作成したいと考えています。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_keyboard、Window のイベントにバインドします。

on_keyboardWindowのこのイベントは何ですか?kivy ドキュメントで検索しwindowてみましょう。

4 番目のリンクkivy.core.window.Keyboard (Python クラス、ウィンドウ内) は興味深いようです。on_keyboardそのリンクをたどると、 Window.keyboard の使用例があり、イベントについても説明されているようです

上記のすべてのリソースに従って、ショートカットにグローバルにバインドして、それに反応できるようにする必要があります。

これが役立つことを願っています。

于 2013-03-28T23:08:58.317 に答える