我找不到任何关于如何使用 wx 在 OSX 上创建菜单栏图标的指示。我原本以为 wxTaskBarIcon 类可以,但它实际上在 Dock 上创建了一个图标。在 Windows 上,wxTaskBarIcon 创建一个 Systray 图标和相关菜单,我认为在 mac osx 上它会创建一个菜单栏图标,我猜不是。
4 回答
您必须设置wxTaskBarIconType
为STATUSITEM
,而不是DOCK
。用于此的 Cocoa API 是NSStatusBar
和NSStatusItem
; 这是 wxWidgets 中调用它们的代码。
wxPython 的创建者 Robin Dunn 的这篇文章解释说 wxPython 还不支持 mac 上的菜单栏图标。他们只支持 Dock。
从 wxPython 2.9.2.0 开始wx.TaskBarIcon
,现在将在 OSX 上创建一个菜单栏图标,只要您调用SetIcon
.
wiki.wxpython.org 上有一个示例,它将一个图标放在 macOS 菜单栏的“状态菜单”部分(右侧)(忽略页面标题): https ://wiki.wxpython.org/Custom %20Mac%20OsX%20Dock%20Bar%20Icon
它适用于运行 python 2.7.14(使用 miniconda 安装)和 wxpython 3.0.0.0 osx-cocoa(经典)的 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
这也会在其他平台上生成状态/通知/任务栏类型的图标。