0

我正在尝试使用 appindicator 和 Gtk 制作一个小应用程序。我的目标是显示一个服务器列表,其中包含指向它们的 url 的链接。

这是我尝试的:

from gi.repository import Gtk as gtk
from gi.repository import AppIndicator3 as appindicator

def main():
    indicator = appindicator.Indicator.new(APPINDICATOR_ID, img, appindicator.IndicatorCategory.SYSTEM_SERVICES)
    indicator.set_status(appindicator.IndicatorStatus.ACTIVE)
    indicator.set_menu(build_menu())
    gtk.main()

def build_menu():
    menu = gtk.Menu()

    value = "label"
    item = gtk.MenuItem()
    button = gtk.LinkButton("http://url/host/id", label=value)
    button.show()

    item.add(button)
    item.show()

    menu.append(item)
    menu.show_all()

    return menu

if __name__ == "__main__":
    main()

这是有效的,我没有错误。但是当我启动应用程序时,我只有菜单,有项目但没有链接。

我见过很多 gtk.Window 的例子,但没有一个 appindicator 的菜单。

有没有办法在这个菜单中有链接?

谢谢

4

1 回答 1

0

我找到了一种方法来做到这一点。我不确定这是最好的方法,但它确实有效。

我没有创建一个 LinkItem,而是为打开 url 创建了一个函数:

def open_url(source):
    webbrowser.open("http://url/host/id")

然后我用以下方式调用它connect

item.connect("activate", open_url)

当我运行我的应用程序并单击我的项目时,它会按预期打开 url。这是代码工作的一部分:

def build_menu():
    menu = gtk.Menu()

    value = "label"
    item = gtk.MenuItem(value)
    item.connect("activate", open_url)

    menu.append(item)
    menu.show_all()

    return menu

正如我在网络上的许多帖子中看到的那样,与普通 Gtk 应用程序相比,appindicator 的功能有限。

于 2016-06-27T12:10:24.807 回答