如何在wxPython / wxWidgets中将菜单项添加到框架的系统菜单中?
(我说的是点击Windows中的应用程序图标时出现的菜单 - 最小化,最大化,关闭......)。
我想为一个简单的应用添加一个我自己的菜单项,不需要一个完整的顶级菜单。
仅限Windows的解决方案,如果存在(并且足够简单),也会很有用。
答案 0 :(得分:1)
我不认为wxWidgets / wxPython允许您操作系统菜单,但有一些例外情况不足以满足您的需求:
您可以通过将样式标记传递给wx.Frame来删除系统菜单:style=wx.DEFAULT_FRAME_STYLE & ~wx.SYSTEM_MENU
在Mac OS X上,带有wx.ID_EXIT
和wx.ID_HELP
等ID的菜单项会移动到应用程序菜单中。
我尝试绑定wx.EVT_MENU_OPEN
事件,虽然调用了事件处理程序,但传递的事件在Windows上不包含任何有用的内容。当我打开Frame的系统菜单时,下面的代码打印'None 0':
import wx
class Frame(wx.Frame):
def __init__(self, *args, **kwargs):
super(Frame, self).__init__(*args, **kwargs)
self.Bind(wx.EVT_MENU_OPEN, self.onMenuOpen)
def onMenuOpen(self, event):
print event.GetMenu(), event.GetMenuId()
event.Skip()
app = wx.App(0)
frame = Frame(None)
frame.Show()
app.MainLoop()