web-dev-qa-db-ja.com

信号照合なしのGtk3 +キーボードショートカット

私はpythonを使用して最初のGtk3 +アプリケーションを作成している最中であり、ドキュメントがないことに非常にイライラしています:(

さて、私がやろうとしているのは、 Delete TreeViewからアイテムを削除するボタン。コードの「クリック」信号をバインドするための削除ボタンはありません。

これは私のコードです:

def make_shortcuts(self):
        self.my_accelerators = Gtk.AccelGroup()
        self.add_accel_group(self.my_accelerators)
        self.add_accelerator(self.treeview, "<Delete>", signal="???")

def add_accelerator(self, widget, accelerator, signal="activate"):
        if accelerator is not None:
            key, mod = Gtk.accelerator_parse(accelerator)
            widget.add_accelerator(signal, self.my_accelerators, key, mod, Gtk.AccelFlags.VISIBLE)

キーボードショートカットを関数ではなく信号にバインドする方法がわかりません。関数へのバインドは、はるかに柔軟です。

キーボードショートカットを機能にバインドする方法はありますか?

4
hytromo

アクセラレータを使用する代わりに、TreeViewの-​​ key-press-event 信号を関数に接続し、それが Delete 押されたキー。

def on_treeview_key_press_event(self, widget, event):
    key = Gdk.keyval_name(event.keyval)
    if key == 'Delete':
        self.remove_items()
5
tectux