【问题标题】:How to write an application for the system tray in Linux如何在 Linux 中为系统托盘编写应用程序
【发布时间】:2010-11-15 06:20:08
【问题描述】:

如何编写我的应用程序以使其能够在 Linux 的系统托盘中运行?其实就像CheckGmail一样。

与 CheckGmail 一样,我也希望在悬停托盘图标时出现某种弹出框。

是否有用于执行此操作的 API、类或其他东西?我能找到的似乎都适用于 Windows。

如果我必须特定于语言,那么最好使用 C/C++,但 Python 中的解决方案很可能也可以。

谢谢。

【问题讨论】:

  • linux 没有系统托盘——你的窗口管理器可能——你用的是哪一个?
  • 是的,抱歉,我将 Xmonad 与 xmobar 一起使用。托盘作为我的系统托盘。但我不确定为什么它与我的问题有关?
  • (这无关紧要,自从 freedesktop 规范以来就没有了。(这是拥有它的全部意义。)

标签: c++ python c linux system-tray


【解决方案1】:

Qt 框架包含一个QSystemTrayIcon 类。这意味着您可以使用 C++ 或 Python(或任何其他 language with Qt bindings,包括 C#、Ada、Pascal、Perl、PHP 和 Ruby)编写应用程序,并在 Windows、Linux、Mac 或任何其他受支持的 Qt 操作系统上运行您的应用程序.我应该补充一点,Qt 应用程序通常可以很好地在您使用的任何操作系统上看起来原生,而无需付出太多努力(即使在 Linux 上的 Gnome/KDE 之间)。 Qt 还拥有出色的文档、大量示例代码、慷慨的许可证并且维护良好。

【讨论】:

    【解决方案2】:

    python-eggtrayicon

    这是 debian/testing 中的 debian 包 python-eggtrayicon 附带的示例...

    #!/usr/bin/python
    import pygtk
    pygtk.require("2.0")
    import gtk
    import egg.trayicon
    t = egg.trayicon.TrayIcon("MyFirstTrayIcon")
    t.add(gtk.Label("Hello"))
    t.show_all()
    gtk.main()
    

    它只是在通知区域显示一个标签。 (搜索那个,你可能会得到很多更好的点击...)

    【讨论】:

    【解决方案3】:

    Qt 是跨平台的,并且支持系统托盘。它的Python bindings 也不错。有关详细信息,请参阅example application

    【讨论】:

      【解决方案4】:

      在 python 提示符下试试这个。

      import gtk
      
      icon = gtk.StatusIcon()
      icon.set_from_stock(gtk.STOCK_ABOUT)
      
      gtk.main()
      

      您应该会在系统托盘中看到一个图标。

      更多示例请参见snippet

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-16
        • 2011-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-19
        • 1970-01-01
        相关资源
        最近更新 更多