如何拦截GTK主循环,或者使用python gtk为主函数设置回调事件?

时间:2012-02-08 00:50:49

标签: python gtk pygtk

我有一个显示滑块的基本程序。我理解他们使用基于事件的回调的概念。我想要做的是说更新图像,或者在没有用户交互的情况下自动更新日志,所以它基本上就是一直调用这个事件。我不确定是否有回调,但任何建议都会受到赞赏。

2 个答案:

答案 0 :(得分:4)

如果我理解你,你可以使用gobject.timeout_add来做到这一点。

答案 1 :(得分:3)

这看起来像是轮询,这很糟糕,因为它耗费资源。事实上,您仍然应该使用事件,因为应该在图像发生变化时触发应该触发更新的事件。

如果你想在后台执行东西,可能你想要的是一个空闲的事件处理程序,每当程序没有更多的事件要处理时就会运行它。请使用g_idle_add

如果你想要的是执行一个动作,比如每5秒钟一次,那么就像Jeremy提出的那样使用计时器事件。您应该使用g_timeout_add_seconds一段时间的多倍(它可以避免无故唤醒CPU,这对于良好的电源管理非常有用),或g_timeout_add毫秒的粒度。