我有一个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?
答案 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")
程序多次重建菜单。这是你的问题。我没有进一步深入研究这个问题。