我的应用程序中有一个子菜单,需要根据从internet下载的信息(在运行时)进行更改。我的当前代码:
def rebuild_asset_menu(self):
self.exchange_menu.set_submenu(self._menu_exchange()) # returns a GtkMenu
self.exchange_menu.show_all()
def _menu_exchange(self):
exchange_list_menu = Gtk.Menu()
self.exchange_group = []
subgroup = [] # group all asset pairs of all exchange menus together
for exchange in self.coin.EXCHANGES:
item = Gtk.RadioMenuItem.new_with_label(self.exchange_group, exchange.get('name'))
item.set_submenu(self._menu_asset_pairs(exchange, subgroup))
item.connect('toggled', self._handle_toggle, exchange.get('code'))
self.exchange_group.append(item)
exchange_list_menu.append(item)
if self.active_exchange == exchange.get('code'):
item.set_active(True)
return exchange_list_menu
不幸的是,这不一致地产生了核心转储、segfaults和“double free or corruption(fasttop)”错误。公平地说,我不确定这是否是导致这些错误的原因,但这是我最好的猜测。我无法从核心转储的十六进制地址中提取任何信息。你知道吗
我还尝试过在附加新的子菜单之前先删除旧的子菜单,使用self.exchange_menu.remove(self.exchange_menu.get_submenu())
。但这会产生以下错误:
Gtk-CRITICAL **: gtk_container_remove: assertion '_gtk_widget_get_parent (widget) == GTK_WIDGET (container) || GTK_IS_ASSISTANT (container) || GTK_IS_ACTION_BAR (container) || GTK_IS_POPOVER_MENU (container)' failed
你知道我能做什么吗?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐