WxPython wxMenu InsertRadioItem问题

时间:2012-07-15 23:09:31

标签: wxpython

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

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

order += 1

我在程序上插入广播项目,当我点击菜单项时我的程序崩溃,我不知道发生了什么......

1 个答案:

答案 0 :(得分:0)

我遇到过这个,并没有真正的“修复”。问题是当您尝试动态添加或插入单选按钮时,单选按钮无法正确分组。我可以想出最好的工作,我添加到我的MenuBar类中为我重新创建Servers菜单。

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)

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