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

wxGetStockLabel(): invalid stock item ID

如何避免这个错误:

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

可在此处找到 stock 项 ID:
wxpython stock items

它指的是 wx.ID_FILE、wx.ID_FIND、wx.ID_FIRST、wx.ID_FLOPPY、wx.ID_FORWARD 等标准 ID,提供包含在菜单。

除了分配给 "stock" 图像之外,项目使用的是一个唯一的 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())