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 - 每次刷新时调用的函数。在此函数中,可以执行所有需要的操作,例如检查剪贴板更改和编辑菜单。