wxを使用してmac osxでメニューバーアイコンを設定する方法
質問
wxを使用してOSXでメニューバーアイコンを作成する方法に関するポインタが見つかりませんでした。元々はwxTaskBarIconクラスで十分だと思っていましたが、実際にはDockにアイコンを作成します。 Windowsでは、wxTaskBarIconはSystrayアイコンと関連メニューを作成しますが、mac osxではメニューバーアイコンを作成すると思います。
解決
wxTaskBarIconType
を DOCK
ではなく、 STATUSITEM
に設定する必要があります。このためのCocoa APIは、 NSStatusBar
および NSStatusItem
です。 これらを呼び出すwxWidgetsのコード。
他のヒント
この投稿 by Robin Dunn 、wxPythonの作成者は、wxPythonはまだMacのメニューバーアイコンをサポートしていないと説明しています。 Dockのみをサポートしています。
wxPython 2.9.2.0以降、 SetIcon
を呼び出す限り、 wx.TaskBarIcon
はOSXで代わりにメニューバーアイコンを作成します。
「ステータスメニュー」にアイコンを配置するwiki.wxpython.orgの例があります。 macOSメニューバーのセクション(右側)(ページタイトルを無視): https://wiki.wxpython.org/Custom%20Mac%20OsX% 20Dock%20Bar%20Icon
wxpython 3.0.0.0 osx-cocoa(クラシック)でpython 2.7.14(minicondaを使用してインストール)を実行するmacOS High Sierra(10.13.3)で動作します。
同様に、Python 3.6.4およびwxpython 4.0.1 osx-cocoa(phoenix)で動作します。 マイナーなコード変更が必要:
- wx.advをインポートする必要があります
- wx.TaskBarIconはwx.adv.TaskBarIconになります
- wx.IconFromBitmapはwx.Iconになります
他のプラットフォームでもstatus / notification / taskbar-typeアイコンが生成されます。