问题 如何在其他平台上完成系统托盘应用程序?


Windows有“系统托盘”,可存放时钟和运行良好的服务,如MSN,Steam等。

我想开发一个wxPython托盘应用程序,但我想知道这将如何移植到其他平台。每个平台上的托盘等价物是多少,以及支持Windows,OSX和Linux需要多少手动工作(特别是哪些shell最友好)。


11254
2018-01-07 05:55


起源



答案:


wx是一个跨平台的GUI和工具库,支持Win32,Mac OS X,GTK +,X11,Motif,WinCE等。如果您使用它的类,那么您的应用程序应该适用于所有这些平台。 对于系统托盘,请查看wxTaskBarIcon(http://docs.wxwidgets.org/stable/wx_wxtaskbaricon.html#wxtaskbaricon)。


6
2018-01-07 07:01





在OS X下,您有状态菜单栏 - 最右侧的项目通常与状态相关(例如电池状态,WiFi连接等)。

尝试搜索 NSStatusBar 和 NSMenuExtra。将应用程序转换为具有NSStatusBar菜单并且不会出现在Dock中的应用程序几乎是微不足道的。有 教程  周围 如何做到这一点。


3
2018-01-07 07:34



我担心的是,MSN会出现在Dock中并通过弹跳来发出通知。我认为这也是我应该如何实施我的,因为它主要是一个通知服务。 - Soviut
看看Growl的通知也是如此。这是超级的。 [growl.info]。 - Matthew Schinckel


答案:


wx是一个跨平台的GUI和工具库,支持Win32,Mac OS X,GTK +,X11,Motif,WinCE等。如果您使用它的类,那么您的应用程序应该适用于所有这些平台。 对于系统托盘,请查看wxTaskBarIcon(http://docs.wxwidgets.org/stable/wx_wxtaskbaricon.html#wxtaskbaricon)。


6
2018-01-07 07:01





在OS X下,您有状态菜单栏 - 最右侧的项目通常与状态相关(例如电池状态,WiFi连接等)。

尝试搜索 NSStatusBar 和 NSMenuExtra。将应用程序转换为具有NSStatusBar菜单并且不会出现在Dock中的应用程序几乎是微不足道的。有 教程  周围 如何做到这一点。


3
2018-01-07 07:34



我担心的是,MSN会出现在Dock中并通过弹跳来发出通知。我认为这也是我应该如何实施我的,因为它主要是一个通知服务。 - Soviut
看看Growl的通知也是如此。这是超级的。 [growl.info]。 - Matthew Schinckel


对于许多Linux桌面系统(Gnome,KDE等)和Freedesktop SysTray协议 已实施。如果任何其他解决方案失败,您可以尝试。


2
2018-01-07 07:00





在Linux上它真的取决于 - 你有不同的编程环境,有些窗口管理器甚至没有托盘区域。 Altho,如果你使用Gtk(并且wx真的是Gtk),那么 gtk.StatusIcon 是你的朋友。

这里 是一些例子(没有检查它们是否真的有用,但应该显示路径)。

对于 wx 我找到了一些示例代码 这里


1
2018-01-07 06:39





使用Qt: Qt Systray示例

这将在Qt运行的所有平台上显示一个系统托盘图标,并支持这些图标。但是,当不支持系统托盘功能时,您需要提出一个策略。


1
2018-01-07 10:12