¿Cómo se lograría una aplicación de bandeja de sistema en otras plataformas?
-
03-07-2019 - |
Pregunta
Windows tiene la " bandeja del sistema " que alberga el reloj y los servicios que siempre se ejecutan como MSN, Steam, etc.
Me gustaría desarrollar una aplicación de bandeja de wxPython, pero me pregunto qué tan bien se adaptará a otras plataformas. ¿Cuál es el equivalente de la bandeja en cada plataforma y la cantidad de trabajo manual que se necesitaría para admitir Windows, OSX y Linux (lo que en particular sería más amigable)?
Solución
wx es una biblioteca de herramientas y GUI multiplataforma que admite Win32, Mac OS X, GTK +, X11, Motif, WinCE y más. Y si utiliza sus clases, su aplicación debería funcionar en todas estas plataformas. Para obtener información sobre la bandeja del sistema, consulte wxTaskBarIcon ( http://docs.wxwidgets.org/stable/wx_wxtasbaricicon html # wxtaskbaricon ).
Otros consejos
Bajo OS X, tiene la barra de menú de estado: los elementos más a la derecha a menudo están relacionados con el estado (como el estado de la batería, las conexiones WiFi, etc.).
Intente buscar NSStatusBar y NSMenuExtra . Es casi trivial convertir una aplicación en una que tiene un menú de Barra de estado NS y no aparece en el Dock. Hay tutoriales around sobre cómo hacerlo.
Para muchos sistemas de escritorio Linux (Gnome, KDE, etc.) un SysTray Protocol está implementado. Puedes intentarlo si falla alguna otra solución.
En Linux, realmente depende: hay 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 Gtk realmente), gtk.StatusIcon es tu amigo.
Aquí hay algunos ejemplos de eso (no he revisado si realmente funcionan, pero deberían mostrarte la ruta).
Para wx
encontré un código de ejemplo aquí .
Use Qt: Qt Systray Example
Eso mostrará un icono de la bandeja del sistema en todas las plataformas en las que se ejecuta Qt y es compatible con dichos iconos. Sin embargo, tendrás que idear una estrategia cuando no se admita la funcionalidad de la bandeja del sistema.