web-dev-qa-db-fra.com

Raccourcis clavier Gtk3 + sans correspondance de signal

Je suis en train de créer ma première application Gtk3 + en utilisant python, et je suis assez frustré par le manque de documentation :(

Eh bien, ce que j'essaie de faire, c'est de configurer le Delete bouton pour supprimer un élément de mon TreeView, et je n'ai pas de bouton de suppression afin de lier le signal "cliqué" de celui-ci pour mon code.

Voici mon code:

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)

Je ne comprends pas comment un raccourci clavier doit être lié à un signal et non à une fonction. La liaison à une fonction est beaucoup plus flexible.

Existe-t-il un moyen de lier un raccourci clavier à une fonction?

4
hytromo

Au lieu d'utiliser des accélérateurs, vous pouvez connecter le signal key-press-event de votre TreeView à une fonction et vérifier s'il s'agissait bien du Delete touche enfoncée.

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