Python AppIndicator菜单冻结

时间:2015-12-21 14:45:41

标签: python pygtk appindicator

我正在尝试使用一个显示变量状态消息的菜单项创建一个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()

有时,菜单项中的文本会计入高达数万的文本,有时它会在数百个文章中停止。 更多细节:

  • 在类似的stackoverflow问题中阅读了一些建议的解决方案之后,我添加了标记为###的行。但是,他们无法解决问题。线路"待处理的事件......"永远不会出现在终端。
  • 以类似方式更新面板图标可以完美无瑕地运行。如果我同时更新上面的菜单项和appindicator的面板图标,即使菜单项已冻结,图标也会不断更新。
  • 我在Ubuntu 14.04(Unity桌面)上使用Python 2.7.6。

有什么想法吗?

0 个答案:

没有答案