2016-10-09 6 views
0

Я хочу добавить контекстное меню правой кнопкой мыши на виджет TreeView с помощью Actions. Я попробовал этот код путем смешивания информаций от 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 не может быть построен)PyGtk3 меню правой кнопки мыши по древовидной структуре с действиями

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.

+0

Это 'Gio.ActionGroup', а не' Gtk.ActionGroup', который он заменил. – ptomato