PyGtk3 щелкните правой кнопкой мыши меню в treeview с действиями

#python #menu #action #pygtk #gtk3

#python #меню #Экшен #pygtk #gtk3

Вопрос:

Я хочу добавить контекстное меню при щелчке правой кнопкой мыши в виджет TreeView с помощью действий. Я попробовал этот код, смешав информацию из http://python-gtk-3-tutorial.readthedocs.io/en/latest/application.html#actions и https://developer.gnome.org/gnome-devel-demos/stable/gmenu.py.html но это не работает (NotImplementedError: ActionGroup не может быть создан)

 action = Gio.SimpleAction.new("test", None)
action.connect('activate', self.my_func)
self.add_action(action)

self.tree_view.connect("button-press-event", self.on_click)

def on_click(self, widget, event):
        if event.button == 3:
            path, _, _, _ = widget.get_path_at_pos(int(event.x), int(event.y))
            treeiter = self.model.get_iter(path)
            action_group = Gio.ActionGroup()
            action_group.action_added("app.test")
            treeiter.insert_action_group(action_group)
            menu = Gtk.Menu()
            menu.attach_to_widget(treeiter)
            menu.popup()
  

Ответ №1:

Gio.ActionGroup это абстрактный интерфейс, который нельзя создать напрямую. Вместо этого вы хотите Gio.SimpleActionGroup , и его insert() метод вместо action_added .

Комментарии:

1. Это Gio.ActionGroup не Gtk.ActionGroup то, что он заменил.