在wxPython / wxWidgets中添加系统菜单项

时间:2009-05-09 09:36:01

标签: windows wxpython wxwidgets

如何在wxPython / wxWidgets中将菜单项添加到框架的系统菜单中?
(我说的是点击Windows中的应用程序图标时出现的菜单 - 最小化,最大化,关闭......)。

我想为一个简单的应用添加一个我自己的菜单项,不需要一个完整的顶级菜单。

仅限Windows的解决方案,如果存在(并且足够简单),也会很有用。

1 个答案:

答案 0 :(得分:1)

我不认为wxWidgets / wxPython允许您操作系统菜单,但有一些例外情况不足以满足您的需求:

  • 您可以通过将样式标记传递给wx.Frame来删除系统菜单:style=wx.DEFAULT_FRAME_STYLE & ~wx.SYSTEM_MENU

  • 在Mac OS X上,带有wx.ID_EXITwx.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()