как установить значок меню на Mac OS X с помощью wx
Вопрос
Я не смог найти никаких указаний о том, как создать значок меню в OSX с помощью wx.Первоначально я думал, что подойдет класс wxTaskBarIcon, но на самом деле он создает значок в Dock.В Windows wxTaskBarIcon создает значок в системном трее и связанное с ним меню, и я думаю, что в Mac OSX он создаст значок в строке меню, но думаю, что нет.
Решение
Вы должны установить wxTaskBarIconType
к STATUSITEM
, нет DOCK
.API-интерфейсы Cocoa для этого: NSStatusBar
и NSStatusItem
; вот код в wxWidgets, который их вызывает.
Другие советы
Эта почта Робин Данн, создатель wxPython, объясняет, что wxPython пока не поддерживает значки меню на Mac.Они поддерживают только док.
Начиная с wxPython 2.9.2.0 wx.TaskBarIcon
теперь создаст значок меню в OSX, пока вы вызываете SetIcon
.
На wiki.wxpython.org есть пример, в котором значок помещается в раздел «Меню состояния» (справа) строки меню macOS (игнорируйте заголовок страницы):https://wiki.wxpython.org/Custom%20Mac%20OsX%20Dock%20Bar%20Icon
У меня это работает с macOS High Sierra (10.13.3) под управлением Python 2.7.14 (установлен с помощью miniconda) с wxpython 3.0.0.0 osx-cocoa (классический).
Аналогично работает с Python 3.6.4 и wxpython 4.0.1 osx-cocoa (phoenix);требуются незначительные изменения кода:
- вы должны импортировать wx.adv
- wx.TaskBarIcon становится wx.adv.TaskBarIcon
- wx.IconFromBitmap становится wx.Icon
Это создает значок типа статуса/уведомления/панели задач и на других платформах.