我有一个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?
如果我对此进行了修改:
def rebuild_asset_menu(self):
print ("rebuild")
self.asset_menu.set_submenu(self._menu_bases())
print ("rebuild1")
self.asset_menu.show_all()
print ("rebuild2")
该程序多次重建菜单。这是你的问题。我没有进一步解决这个问题。