2009-05-09 12 views
0

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

私は、完全な吹き出しのトップメニューを必要としない単純なアプリケーションのために私自身のメニュー項目を追加したいと思います。

Windowsのみのソリューション(存在する場合)(これは十分簡単です)でも便利です。

答えて

1

私はwxWidgetsの/ wxPythonのは、あなたが望むもののためには十分ではないいくつかの例外を除いて、あなたはシステムメニューを操作することを可能にするとは思わない:

  • あなたはスタイルを渡すことによって、システムメニューを削除することができますwx.Frameにフラグ:MacのOS X上でstyle=wx.DEFAULT_FRAME_STYLE & ~wx.SYSTEM_MENU

  • 、このようwx.ID_EXITwx.ID_HELPなどのIDを持つメニュー項目はアプリケーションメニューに移動されます。

私は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() 
+1

Windowsの持つシステムメニューはありません。ヘルプと終了メニュー項目は、アプリケーションメニューに移動されます。システムメニューに最も近いのは、ドックアイコンに表示されるメニューです。そのメニューへのアクセスは、wxTaskBarIcon経由で行う必要があります。 – mghie

+0

ありがとう、私の答えを編集しました。 –

+0

私たちはこれが不可能であることに気付くでしょう...ありがとう。 – Hexagon

関連する問題