我有一个菜单:
Projects
|-Project A
| |- Open
| |- Run
| \- Close
\-Project B
|- Open
|- Run
\- Close
我想要" Open"菜单项有wx.ID_OPEN图标 - 但它看起来像给多个菜单条目相同的ID会混淆事件系统。有没有办法可以将ID设置为唯一,还可以将图标设置为相同?
(问题标记为wxpython,因为这是我正在使用的内容,但我想这可能不是特定于语言的?)
答案 0 :(得分:1)
使用相同的ID但以不同方式绑定事件,这应该可以解决这个问题。
pa_open = wx.MenuItem(pa_menu, wx.ID_OPEN, "Open", "", wx.ITEM_NORMAL)
pb_open = wx.MenuItem(pb_menu, wx.ID_OPEN, "Open", "", wx.ITEM_NORMAL)
pa_open.Bind(wx.EVT_MENU, self.onOpenProjectA)
pb_open.Bind(wx.EVT_MENU, self.onOpenProjectB)
或者,如果它只是您想要的相同图标,您可以将每个菜单项设置为wx.ID_ANY
并使用ArtProvider设置您的图标。例如:
pa_open.SetBitmap(wx.ArtProvider.GetBitmap(wx.ART_OPEN))
pb_open.SetBitmap(wx.ArtProvider.GetBitmap(wx.ART_OPEN))
答案 1 :(得分:0)
我会找到一个打开的图标,并通过其SetBitmap()方法设置每个菜单项以使用该位图。这样的事情应该有效:
img = wx.Image(img_filepath, wx.BITMAP_TYPE_ANY)
myMenuItem.SetBitmap(wx.BitmapFromImage(img))
确保获得正确尺寸的图像(例如10x10)。