Windows 有一个“系统托盘”,其中包含时钟和 MSN、Steam 等始终运行的服务。
我想开发一个 wxPython 托盘应用程序,但我想知道这将如何移植到其他平台。每个平台上对应的托盘是多少,以及需要多少手动工作才能支持 Windows、OSX 和 Linux(尤其是哪些 shell 最友好)。
Windows 有一个“系统托盘”,其中包含时钟和 MSN、Steam 等始终运行的服务。
我想开发一个 wxPython 托盘应用程序,但我想知道这将如何移植到其他平台。每个平台上对应的托盘是多少,以及需要多少手动工作才能支持 Windows、OSX 和 Linux(尤其是哪些 shell 最友好)。
wx 是一个跨平台的 GUI 和工具库,支持 Win32、Mac OS X、GTK+、X11、Motif、WinCE 等。如果您使用它的类,那么您的应用程序应该可以在所有这些平台上运行。对于系统托盘,请查看 wxTaskBarIcon ( http://docs.wxwidgets.org/stable/wx_wxtaskbaricon.html#wxtaskbaricon )。
在 OS X 下,您有状态菜单栏 - 最右侧的项目通常是与状态相关的内容(如电池状态、WiFi 连接等)。
尝试搜索NSStatusBar和NSMenuExtra。将一个应用程序变成一个具有 NSStatusBar 菜单并且不出现在 Dock 中的应用程序几乎是微不足道的。有关于如何做到这一点的教程。
对于许多 Linux 桌面系统(Gnome、KDE 等),实现了 Freedesktop 的SysTray 协议。如果任何其他解决方案失败,您可以尝试。
在 Linux 上,这真的取决于 - 你在那里有不同的编程环境,一些窗口管理器甚至没有托盘区域。尽管如此,如果您使用 Gtk(并且 wx 确实是 Gtk),那么gtk.StatusIcon就是您的朋友。
以下是一些示例(尚未检查它们是否真的有效,但应该向您展示路径)。
因为我在这里wx
找到了一些示例代码。
使用 Qt:Qt 系统托盘示例
这将在运行 Qt 并支持此类图标的所有平台上显示一个系统托盘图标。但是,当不支持系统托盘功能时,您需要制定策略。