0

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

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

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

4

1 回答 1

1

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

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

  • 在 Mac OS X 上,带有 id 的菜单项,如wx.ID_EXITwx.ID_HELP被移动到应用程序菜单中。

我试图绑定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()
于 2009-05-09T21:08:52.060 回答