2009-01-07 14 views
11

Windows verfügt über das „System Tray“, dass die Uhr und alle Tage-Betrieb Dienste wie MSN, Dampf beherbergt usw.Wie würde eine System Tray-Anwendung auf anderen Plattformen ausgeführt werden?

Ich möchte eine wxPython-Tray-Anwendung entwickeln, aber ich frage mich, wie gut dieser Wille Port andere Plattformen. Was ist das Fach-Äquivalent auf jeder Plattform und wie viel manuelle Arbeit wäre erforderlich, um Windows, OSX und Linux zu unterstützen (welche Shells wären am freundlichsten)?

Antwort

1

Unter Linux kommt es wirklich darauf an - Sie haben dort verschiedene Programmierumgebungen, und einige Fenstermanager haben nicht einmal einen Tray-Bereich. Alt, wenn du Gtk benutzt (und wx ist Gtk wirklich), ist der gtk.StatusIcon dein Freund.

Here sind einige Beispiele dafür (nicht überprüft, ob sie tatsächlich funktionieren, aber sollte Ihnen den Pfad zeigen).

Für wx fand ich einige Beispielcode here.

2

Für viele Linux-Desktop-Systeme (Gnome, KDE, etc.) ist ein Freedesktop SysTray Protocol implementiert. Sie können das versuchen, wenn eine andere Lösung fehlschlägt.

3

Unter OS X haben Sie die Status-Menüleiste - die am weitesten rechts gelegenen Elemente sind oft Status-bezogene Dinge (wie Batteriestatus, WiFi-Verbindungen, etc.).

Suchen Sie nach NSStatusBar und NSMenuExtra. Es ist fast trivial, eine Anwendung in ein NSStatusBar-Menü zu verwandeln, das nicht im Dock angezeigt wird. Es gibt tutorialsaround auf, wie man es macht.

+0

Mein Anliegen war, dass MSN im Dock erscheint und seine Benachrichtigungen durch Prellen macht. Ich denke, so sollte ich wohl auch meinen implementieren, da es in erster Linie ein Benachrichtigungsdienst ist. – Soviut

+0

Werfen Sie einen Blick auf Growl für Benachrichtigungen. Es ist super. [http://growl.info]. –

1

Verwenden Qt: Qt Systray Example

Das wird ein Systray-Icon auf allen Plattformen zeigen, dass Qt auf ausgeführt wird und dass die Unterstützung solcher Symbole. Sie müssen jedoch eine Strategie entwickeln, wenn die Systray-Funktionalität nicht unterstützt wird.