正如here所述,我有一个使用PyGTK的简单托盘图标。
作为GTK的新手,在我看来gtk.main()
是同步的,阻止任何进一步处理,直到相应的UI关闭。
那么我如何定期(例如每5秒)更新/刷新StatusIcon
的图标 - 我是否必须求助于Twisted等人。对此?
答案 0 :(得分:4)
您可以使用gobject.timeout_add()
添加定期任务。第一个参数是以秒为单位的间隔,第二个参数是您要调用的回调。只要在用作True
时返回评估为bool
的内容,就会调用回调。
另请参阅PyGTK FAQ的第20部分,特别是question 20.7。
答案 1 :(得分:0)
你不能轻易刷新托盘图标,从已经尝试过这个的托盘图标中取出它并失败了(实际上我只是因为“如果执行难以解释,它是一个坏的想法。“),
但是到目前为止,为了刷新状态图标,您需要使用gtk.status_icon_new_from_gicon()
方法设置状态图标,来自doc:
创建一个显示的状态图标 gio.Icon()。如果图标是主题 图标,它将在更新时更新 主题变化。
因此,如果您想要刷新状态图标,则必须使用gio themed icon创建图标,现在您可以直接更新主题图标,此更改将直接显示在托盘状态中。
现在关于你的问题:
是gtk.main()阻塞等待信号,所以你只需要将一个信号绑定到一个动作,当这个信号被触发时,可以执行动作,对于你的动作回调你的情况你可以把代码放到将刷新您的状态图像。
希望我在这里帮到你。