Я не думаю, что wxWidgets / wxPython позволяет вам манипулировать системным меню, с несколькими исключениями, которых недостаточно для того, что вы хотите:
Вы можете удалить системное меню, передав флаг стиля в wx.Frame: style=wx.DEFAULT_FRAME_STYLE & ~wx.SYSTEM_MENU
В Mac OS X элементы меню с идентификаторами, такими как wx.ID_EXIT
и wx.ID_HELP
, перемещаются в меню приложения.
Я пытался связать событие wx.EVT_MENU_OPEN
, и хотя вызывается обработчик события, переданное событие не содержит ничего полезного в Windows. При открытии системного меню фрейма приведенный ниже код выводит «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()