如何在显示pygtk小部件后5秒运行功能?
答案 0 :(得分:14)
您可以使用 glib.timeout_add(interval, callback, ...) 定期调用函数。
如果函数返回 True ,则在间隔后将再次调用它;如果函数返回 False ,则不会再次调用它。
以下是在小部件的 show 事件后添加超时的简短示例:
import pygtk
pygtk.require('2.0')
import gtk
import glib
def timer_cb():
print "5 seconds elapsed."
return False
def show_cb(widget, data=None):
glib.timeout_add(5000, timer_cb)
def destroy_cb(widget, data=None):
gtk.main_quit()
def main():
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.connect("show", show_cb)
window.connect("destroy", destroy_cb)
window.show()
gtk.main()
if __name__ == "__main__":
main()
答案 1 :(得分:9)
如果时间对于精确到十分之一秒并不重要,请使用
glib.timeout_add_seconds(5, ..)
如上所述。
timeout_add_seconds 允许系统将超时与其他事件对齐,从长远来看减少CPU唤醒(特别是如果超时重新启动)和save energy for the planet(!)