como configurar um ícone de menu no Mac OSX usando wx
Pergunta
Não conseguimos encontrar dicas sobre como criar um ícone de menu no OSX usando wx. Eu pensava que a classe wxTaskBarIcon faria, mas ele realmente cria um ícone no Dock. No Windows, wxTaskBarIcon cria um ícone Systray e menu associado, e eu acho que no Mac OSX seria criar um ícone de menu, acho que não.
Solução
Você tem que definir wxTaskBarIconType
para STATUSITEM
, não DOCK
. As APIs de cacau para isso são NSStatusBar
e NSStatusItem
; aqui está o código em wxWidgets que as chamadas para eles .
Outras dicas
Este mensagem por Robin Dunn , o criador do wxPython, explica que wxPython não suporta menubar ícones no mac ainda. Eles só apoiar o Dock.
A partir de wxPython 2.9.2.0 wx.TaskBarIcon
irá criar um ícone de menu agora, em vez de OSX, desde que você chama SetIcon
.
Há um exemplo na wiki.wxpython.org que coloca um ícone na seção "menus status" (lado direito mão) da barra de menu MacOS (ignore o título da página): https://wiki.wxpython.org/Custom%20Mac%20OsX% 20Dock% 20bar% 20Icon
Ele funciona para mim com o MacOS High Sierra (10.13.3) rodando python 2.7.14 (instalado usando miniconda) com wxpython 3.0.0.0 OSX-cacau (clássico).
Da mesma forma, ele funciona com python 3.6.4 e 4.0.1 wxpython OSX-cacau (Phoenix); Código pequenas alterações necessárias:
- você deve importar wx.adv
- wx.TaskBarIcon se torna wx.adv.TaskBarIcon
- wx.IconFromBitmap se torna wx.Icon
Isso gera um ícone de status / notificação / tipo barra de tarefas em outras plataformas também.