首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当显示为弹出菜单时,wx菜单将从框架中消失

问当显示为弹出菜单时,wx菜单将从框架中消失
EN

Stack Overflow用户
提问于 2010-03-24 10:29:05
回答 1查看 369关注 0票数 1

我正在尝试创建一个wx.Menu,它将在一个弹出式菜单(在右键单击时调用)和一个可从框架菜单栏访问的子菜单之间共享。下面的代码演示了这个问题。

如果您从菜单栏中打开"MENU>submenu“,则可以看到"asdf”项。如果你用鼠标右键点击框架内容区域,"asdf“也会出现在那里……然而,返回到菜单栏,你会发现"MENU>submenu“是空的。为什么会发生这种情况?我如何修复它?

代码语言:javascript
复制
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可以工作,但这不是我想要的行为:

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-24 10:37:32

我会创建一个创建并返回wx.Menu对象的函数create_menu。调用它一次,将其添加到菜单栏中,然后在show_popup中调用它。所以你使用的是单独的菜单对象。不要担心在每次右键单击时创建它们,这不是什么大问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2504962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档