0

wxPython / wxWidgetsのフレームのシステムメニューにメニュー項目を追加するにはどうすればよいですか?
(私は、Windowsのアプリケーションアイコンをクリックしたときに表示されるメニューについて話しています-最小化、最大化、閉じるなどのメニュー)。

本格的なトップメニューを必要としないシンプルなアプリケーションのために、独自のメニュー項目を追加したいと思います。

Windowsのみのソリューションが存在する場合(そして十分に単純な場合)も役立ちます。

4

1 に答える 1

1

wxWidgets/wxPython ではシステム メニューを操作できないと思いますが、いくつかの例外があり、必要なものには十分ではありません。

  • スタイル フラグを wx.Frame に渡すことで、システム メニューを削除できます。style=wx.DEFAULT_FRAME_STYLE & ~wx.SYSTEM_MENU

  • Mac OS X では、wx.ID_EXITやなどの ID を持つメニュー項目wx.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 に答える