python cross-platform operating-system wxpython system-tray

python - ¿Cómo se podría lograr una aplicación de bandeja del sistema en otras plataformas?



cross-platform operating-system (5)

Windows tiene la "bandeja del sistema" que contiene el reloj y los servicios que ejecutan constantemente, como MSN, Steam, etc.

Me gustaría desarrollar una aplicación de bandeja wxPython, pero me pregunto qué tan bien esto se transferirá a otras plataformas. ¿Cuál es el equivalente de la bandeja en cada plataforma, y ​​cuánto trabajo manual se requeriría para soportar Windows, OSX y Linux (qué shells en particular sería más amigable).


Bajo OS X tiene la barra de Menú de estado: los elementos más a la derecha son a menudo cosas relacionadas con el estado (como el estado de la batería, conexiones WiFi, etc.).

Intente buscar NSStatusBar y NSMenuExtra . Es casi trivial convertir una aplicación en una que tiene un menú NSStatusBar y no aparece en el Dock. Hay tutoriales sobre cómo hacerlo.


En Linux realmente depende: tienes diferentes entornos de programación allí, y algunos administradores de ventanas ni siquiera tienen un área de bandeja. Aunque si usas Gtk (y wx es realmente Gtk), gtk.StatusIcon es tu amigo.

Aquí hay algunos ejemplos de eso (no han comprobado si realmente funcionan, pero deberían mostrarle la ruta).

Para wx encontré un código de ejemplo aquí .


Para muchos sistemas de escritorio Linux (Gnome, KDE, etc.) se implementa un protocolo SysTray de Freedesktop. Puede intentarlo si falla cualquier otra solución.


Utilice el ejemplo de Qt: Qt Systray

Eso mostrará un ícono de bandeja de sistema en todas las plataformas en las que Qt se ejecuta y que admite dichos iconos. Sin embargo, tendrás que idear una estrategia cuando la funcionalidad de la bandeja del sistema no sea compatible.


wx es una biblioteca de GUI y herramientas multiplataforma que admite Win32, Mac OS X, GTK +, X11, Motif, WinCE y más. Y si usa sus clases, entonces su aplicación debería funcionar en todas estas plataformas. Para ver la bandeja del sistema, consulte wxTaskBarIcon ( http://docs.wxwidgets.org/stable/wx_wxtaskbaricon.html#wxtaskbaricon ).