【问题标题】:How would a system tray application be accomplished on other platforms?如何在其他平台上完成系统托盘应用程序?
【发布时间】:2010-09-29 23:30:11
【问题描述】:

Windows 有一个“系统托盘”,其中包含时钟和 MSN、Steam 等始终运行的服务。

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

【问题讨论】:

    标签: python cross-platform operating-system wxpython system-tray


    【解决方案1】:

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

    Here 是其中的一些示例(尚未检查它们是否真的有效,但应该向您显示路径)。

    对于wx,我找到了一些示例代码here

    【讨论】:

      【解决方案2】:

      对于许多 Linux 桌面系统(Gnome、KDE ​​等),实现了 Freedesktop 的 SysTray Protocol。如果任何其他解决方案失败,您可以尝试。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          尝试搜索NSStatusBarNSMenuExtra。将一个应用程序变成一个具有 NSStatusBar 菜单并且不出现在 Dock 中的应用程序几乎是微不足道的。有tutorialsaround怎么做。

          【讨论】:

          • 我担心的是 MSN 出现在 Dock 中并通过弹跳来发出通知。我认为这也是我应该实现的方式,因为它主要是一个通知服务。
          【解决方案5】:

          使用Qt:Qt Systray Example

          这将在所有运行 Qt 并支持此类图标的平台上显示一个系统托盘图标。不过,当系统托盘功能不受支持时,您需要制定策略。

          【讨论】:

            猜你喜欢
            • 2017-12-03
            • 1970-01-01
            • 2010-10-19
            • 2011-05-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-10-19
            • 1970-01-01
            相关资源
            最近更新 更多