Question

Je ne pouvais trouver aucun indicateur sur la manière de créer une icône de barre de menu sur OSX avec wx. Au départ, je pensais que la classe wxTaskBarIcon ferait l'affaire, mais elle crée en réalité une icône sur le Dock. Sous Windows, wxTaskBarIcon crée une icône Systray et un menu associé, et je penserais que sur mac osx, cela créerait une icône de barre de menu, je suppose que non.

Était-ce utile?

La solution

Vous devez définir wxTaskBarIconType sur STATUSITEM et non sur DOCK . Les API Cocoa pour cela sont NSStatusBar et NSStatusItem ; voici le code dans wxWidgets qui les appelle .

Autres conseils

Ce message de Robin Dunn , créateur de wxPython, explique que wxPython ne prend pas encore en charge les icônes de la barre de menus sur mac. Ils ne supportent que le Dock.

À partir de wxPython 2.9.2.0, wx.TaskBarIcon créera désormais une icône de barre de menu sous OSX, tant que vous appelez SetIcon .

Il existe un exemple sur wiki.wxpython.org qui place une icône dans les "menus d'état". section (côté droit) de la barre de menu macOS (ignore le titre de la page): https://wiki.wxpython.org/Custom%20Mac%20OsX%% 20Dock% 20Bar% 20Icon

Cela fonctionne pour moi avec macOS High Sierra (10.13.3) exécutant python 2.7.14 (installé à l’aide de miniconda) avec wxpython 3.0.0.0 osx-cacoa (classique).

De même, cela fonctionne avec python 3.6.4 et wxpython 4.0.1 osx-cacoa (phoenix); modifications mineures du code requises:

  • vous devez importer wx.adv
  • wx.TaskBarIcon devient wx.adv.TaskBarIcon
  • wx.IconFromBitmap devient wx.Icon

Ceci génère une icône de type status / notification / taskbar sur les autres plates-formes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top