我正在尝试创建一个wx.Menu,它将在一个弹出式菜单(在右键单击时调用)和一个可从框架菜单栏访问的子菜单之间共享。下面的代码演示了这个问题。
如果您从菜单栏中打开"MENU>submenu“,则可以看到"asdf”项。如果你用鼠标右键点击框架内容区域,"asdf“也会出现在那里……然而,返回到菜单栏,你会发现"MENU>submenu“是空的。为什么会发生这种情况?我如何修复它?
import wx
app = wx.PySimpleApp()
m = wx.Menu()
m.Append(-1, 'asdf')
def show_popup(evt):
''' R-click callback '''
f.PopupMenu(m, (evt.X, evt.Y))
f = wx.Frame(None)
f.SetMenuBar(wx.MenuBar())
frame_menu = wx.Menu()
f.MenuBar.Append(frame_menu, 'MENU')
frame_menu.AppendMenu(-1,'submenu', m)
f.Show()
f.Bind(wx.EVT_RIGHT_DOWN, show_popup)
app.MainLoop()有趣的是,将菜单附加到MenuBar可以工作,但这不是我想要的行为:
import wx
app = wx.PySimpleApp()
m = wx.Menu()
m.Append(-1, 'asdf')
def show_popup(evt):
f.PopupMenu(m, (evt.X, evt.Y))
f = wx.Frame(None)
f.SetMenuBar(wx.MenuBar())
f.MenuBar.Append(m, 'MENU')
f.Show()
f.Bind(wx.EVT_RIGHT_DOWN, show_popup)
app.MainLoop()发布于 2010-03-24 10:37:32
我会创建一个创建并返回wx.Menu对象的函数create_menu。调用它一次,将其添加到菜单栏中,然后在show_popup中调用它。所以你使用的是单独的菜单对象。不要担心在每次右键单击时创建它们,这不是什么大问题。
https://stackoverflow.com/questions/2504962
复制相似问题