Windows有「系統托盤」,其中包含MSN,Steam等時鐘和長時間運行的服務。系統托盤應用程序如何在其他平臺上完成?
我想開發一個wxPython托盤應用程序,但是我想知道它將如何移植到其他平臺。每個平臺上托盤的等效數量是多少,以及需要多少手動工作來支持Windows,OSX和Linux(特別是哪些shell最友好)。
Windows有「系統托盤」,其中包含MSN,Steam等時鐘和長時間運行的服務。系統托盤應用程序如何在其他平臺上完成?
我想開發一個wxPython托盤應用程序,但是我想知道它將如何移植到其他平臺。每個平臺上托盤的等效數量是多少,以及需要多少手動工作來支持Windows,OSX和Linux(特別是哪些shell最友好)。
wx是一個支持Win32,Mac OS X,GTK +,X11,Motif,WinCE等的跨平臺GUI和工具庫。如果你使用它的類,那麼你的應用程序應該在所有這些平臺上工作。 有關係統托盤的信息,請參閱wxTaskBarIcon(http://docs.wxwidgets.org/stable/wx_wxtaskbaricon.html#wxtaskbaricon)。
在Linux上它確實取決於 - 你在那裏有不同的編程環境,有些窗口管理器甚至沒有托盤區域。 Altho,如果你使用Gtk(而wx是Gtk),gtk.StatusIcon是你的朋友。
Here是一些例子(沒有檢查他們是否真的工作,但應該告訴你路徑)。
對於wx
我發現了一些示例代碼here。
對於許多Linux桌面系統(Gnome,KDE等),實現了Freedesktop的SysTray Protocol。如果任何其他解決方案失敗,您可以嘗試。
在OS X下你有狀態菜單欄 - 最右邊的項目往往是狀態相關的東西(如電池狀態,WiFi連接等)。
嘗試搜索NSStatusBar和NSMenuExtra。將應用程序轉換爲具有NSStatusBar菜單並且不出現在Dock中的應用程序幾乎是微不足道的。如何做到這一點有tutorialsaround。
使用Qt:Qt Systray Example
那將表明對Qt的運行在所有的平臺和支持這種圖標的系統托盤圖標。不過,當你不支持systray功能時,你需要提出一個策略。
我的擔心是MSN出現在碼頭,並通過彈跳進行通知。我認爲這也是我應該實施礦井的原因,因爲它主要是通知服務。 – Soviut 2009-01-07 14:42:41