Добавление пунктов системного меню в wxPython / wxWidgets - PullRequest
0 голосов
/ 09 мая 2009

Как можно добавить пункты меню в системное меню фрейма в wxPython / wxWidgets?
(Я имею в виду меню, которое появляется при нажатии на значок приложения в Windows - меню с Развернуть, Развернуть, Закрыть, ...).

Я хочу добавить собственный пункт меню для простого приложения, которое не требует полноценного верхнего меню.

Было бы полезно использовать решение только для Windows, если оно существует (и достаточно простое).

1 Ответ

1 голос
/ 10 мая 2009

Я не думаю, что 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()
...