如何避免此错误:
wx._core.wxAssertionError: C++ assertion "Assert failure" failed at /Users/robind/projects/bb2/dist-osx-py37/build/ext/wxWidgets/src/common/stockitem.cpp(213) in wxGetStockLabel(): invalid stock item ID
通话时
ID_SAVE =wx.NewId()
wx.MenuItem(self, ID_SAVE , label)
我尝试过wx.ID_ANY
,但也遇到了同样的问题。
答案 0 :(得分:0)
可以在以下位置找到stock
项ID:
wxpython stock items
它指的是诸如wx.ID_FILE,wx.ID_FIND,wx.ID_FIRST,wx.ID_FLOPPY,wx.ID_FORWARD等之类的标准ID,以提供包含在菜单中的图标。
除了分配给“库存”图像外,这些项目还使用唯一的ID,使您可以Bind
进行操作,以便在选择菜单项时激活例程。
以下是一些示例代码,其中有两种将菜单项和图像都插入到名为self.filem
的菜单中的方法
self.filem = wx.Menu()
self.filem.Append(wx.ID_FILE, 'Open &Location', 'Open Location')
self.Bind(wx.EVT_MENU, self.OnLocation, id=wx.ID_FILE)
q1 = wx.MenuItem(self.filem, wx.NewIdRef(), "Add to Job Q&ueue")
q1.SetBitmap(fs_images.getqueueaddBitmap())
self.filem.Append(q1)
self.Bind(wx.EVT_MENU, self.OnJobOpen, id=q1.GetId())