当 AppIndicator 运行时,如何更改其中的菜单项?

当 AppIndicator 运行时,如何更改其中的菜单项?

StackOverflow 上有一个类似的问题,但是它对我没有帮助:跑步时更换物品我尝试在 StackOverflow 上提问,但那里的人不太活跃:如何在 Unity Indicator Applet 中更改 GTK 菜单?

问题是,如果我在 Gtk.main() 之外定义更改函数,它将永远不会执行,而在它内部只会执行一次。如果我在里面创建一个无限循环,Gtk.main() 将永远不会执行。这是我的代码(修改后的标准示例)。

#!/usr/bin/env python

import sys

from gi.repository import Gtk, Gdk
from gi.repository import AppIndicator3 as appindicator

if __name__ == "__main__":
    ind = appindicator.Indicator.new ("example-simple-client",
                                      "indicator-messages",
                         appindicator.IndicatorCategory.APPLICATION_STATUS)
    ind.set_status (appindicator.IndicatorStatus.ACTIVE)
    ind.set_attention_icon ("indicator-messages-new")

    menu = Gtk.Menu()
    menu_quit = Gtk.MenuItem('Quit')
    def add_item(menu, label):
        menu.append(MenuItem(label))
    menu.append(menu_quit)
    def quit_app(w):
        sys.exit(0)
    menu_quit.connect('activate', quit_app)
    menu_quit.show()
    ind.set_menu(menu)   
    Gtk.main()

我应该在代码的哪里添加新的菜单项(或更改现有的菜单项)?我是 GUI 编程的真正新手...

答案1

必须使用

GLib.timeout_add(10, handler_timeout)

在指示器代码中,其中 10 - 表示刷新间隔 10 毫秒,handler_timeout - 每次刷新时调用的函数。在此函数中,可以执行所有需要的操作,例如检查剪贴板更改和编辑菜单。

相关内容