wxGetStockLabel():无效的库存项目ID

时间:2019-11-18 12:26:48

标签: wxpython

如何避免此错误:

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,但也遇到了同样的问题。

1 个答案:

答案 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())