Python 3和GTK3:跨平台托盘图标

6
可以使用 PyGTK 和 PyGObject 库创建一个具有菜单的托盘图标。这种解决方案是可移植的,可在几乎所有系统上工作。如果不想使用 AppIndicator3,可以考虑使用这种方法。但请注意,如果您选择此选项,则需要编写更多的代码来实现所需的功能。例如,在 Windows 和 MacOS 上,可能需要使用不同的库或API。请参考以下链接获取更多信息:https://github.com/afiskon/py-gtk-example/blob/master/gtk-example.pyhttps://lists.freebsd.org/pipermail/freebsd-questions/2016-June/272287.html
1个回答

6

好的,我想我明白了。这个想法是如果AppIndicator3不可用,则回退到Gtk.StatusIcon:

class TrayIcon:

    def __init__(self, appid, icon, menu):
        self.menu = menu

        APPIND_SUPPORT = 1
        try:
            from gi.repository import AppIndicator3
        except:
            APPIND_SUPPORT = 0

        if APPIND_SUPPORT == 1:
            self.ind = AppIndicator3.Indicator.new(
                appid, icon, AppIndicator3.IndicatorCategory.APPLICATION_STATUS)
            self.ind.set_status(AppIndicator3.IndicatorStatus.ACTIVE)
            self.ind.set_menu(self.menu)
        else:
            self.ind = Gtk.StatusIcon()
            self.ind.set_from_file(icon)
            self.ind.connect('popup-menu', self.onPopupMenu)

    def onPopupMenu(self, icon, button, time):
        self.menu.popup(None, None, Gtk.StatusIcon.position_menu, icon, button, time)

适用于Linux + Unity、Linux + Xfce、FreeBSD + i3的操作系统。

另请参阅:


没有Gtk的导入。 - WinEunuuchs2Unix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接