我正在尝试使用一个显示变量状态消息的菜单项创建一个appindicator。这有效,但随后菜单项的文本停止更新。这是我尝试隔离问题时创建的最小非工作示例:
#!/usr/bin/python
import threading,time
from gi.repository import Gtk
from gi.repository import AppIndicator3 as AppIndicator
i = 0
def tinker_with_menu_item():
global i
while True:
i = i + 1
menu_item.get_child().set_text("We are now at " + str(i) + ".")
menu_item.queue_draw() ###
while Gtk.events_pending(): ###
print "events pending ..." ###
Gtk.main_iteration_do(True) ###
time.sleep(0.01)
menu_item = Gtk.MenuItem('')
menu = Gtk.Menu()
menu.append(menu_item)
menu.show_all()
appindicator = AppIndicator.Indicator.new("my-app-indicator", Gtk.STOCK_INFO, AppIndicator.IndicatorCategory.SYSTEM_SERVICES)
appindicator.set_menu(menu)
appindicator.set_status(AppIndicator.IndicatorStatus.ACTIVE)
thread = threading.Thread(target=tinker_with_menu_item)
thread.daemon = True
thread.start()
Gtk.main()
有时,菜单项中的文本会计入高达数万的文本,有时它会在数百个文章中停止。 更多细节:
###
的行。但是,他们无法解决问题。线路"待处理的事件......"永远不会出现在终端。有什么想法吗?