0
wxMenuItem = wxMenuSource.InsertRadioItem(order, wx.ID_ANY, test, "")

App.Bind(wx.EVT_MENU, OnPerspective_Click, wxMenuItem)

order += 1

我按程序插入收音机项目,当我单击菜单项时,我的程序崩溃了,我不知道发生了什么......

4

1 回答 1

0

我遇到过这个,并没有一个很好的“修复”。问题是当您尝试动态添加或插入单选按钮时,它们没有正确分组。我可以想出的最好的解决方法是我将这个方法添加到我的 MenuBar 类中,以便为我重新创建一个服务器菜单。

def setServers(self):
  menu = Menus['Servers']
  while menu.GetMenuItemCount() > 2:
    menu.RemoveItem(menu.FindItemByPosition(2))
  menu.AppendSeparator()
  servers = Config.getValueList('rpcservers', ['hostname', 'port', 'state'])
  for s in servers:
    id = wx.NewId() #@ReservedAssignment
    evtname = 'S%s:%s' % (s['hostname'], s['port'])
    connection = '%s:%s' % (s['hostname'], s['port'])
    menu.Append(id, connection, s['description'], kind = wx.ITEM_RADIO)
    if s['state'] == 'inuse':
      menu.Check(id, True)

那里的一些代码没有直接相关(对不起,快速复制和粘贴),但这里的想法是单选按钮的元素都在这个菜单的底部。在添加分隔符和所有新的单选按钮之前,我删除了所有元素和分隔符。通过以这种方式重新创建它们,我能够绕过我遇到的错误,即新添加的单选按钮与其兄弟按钮无关。希望这会有所帮助。如果您需要澄清,请告诉我。

于 2012-07-16T00:59:54.703 回答