重建复杂的Gtk菜单

时间:2018-02-06 08:50:43

标签: python ubuntu gtk pygtk

我有一个Ubuntu程序,它显示了一个复杂的Gtk菜单,最多有4个嵌套级别,总共超过100个菜单项(我知道不优雅)。菜单项表示数据库中的项目,当此数据更改时,需要重建菜单。

所以我有一个能够解决这个问题的功能:

def rebuild_asset_menu(self):
    self.asset_menu.set_submenu(self._menu_bases())
    GLib.idle_add(self.asset_menu.show_all)

self.asset_menu是附加大量子菜单的菜单项。 self._menu_bases()构建子菜单结构并返回它。

程序启动时,菜单结构的构建非常可爱。但是当调用上面的代码来更新子菜单(基本上用新的子菜单替换它)时,GUI变得非常慢,并且菜单通常都是空的。

仅仅是因为我有太多的菜单元素,或者我做错了什么?或者是Unity?

1 个答案:

答案 0 :(得分:0)

如果我将代码修改为:

def rebuild_asset_menu(self):
    print ("rebuild")
    self.asset_menu.set_submenu(self._menu_bases())
    print ("rebuild1")
    self.asset_menu.show_all()
    print ("rebuild2")

程序多次重建菜单。这是你的问题。我没有进一步深入研究这个问题。