11

如何在显示 pygtk 小部件后 5 秒运行函数?

4

2 回答 2

14

您可以使用glib.timeout_add( interval , callback , ... )定期调用函数。

如果函数返回True则间隔后会再次调用;如果函数返回False,则不会再次调用它。

这是一个在小部件的显示事件之后添加超时的简短示例:

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()
于 2009-08-20T22:49:06.813 回答
9

如果时间不是精确到十分之一秒,请使用

glib.timeout_add_seconds(5, ..)

其他同上。

timeout_add_seconds允许系统将超时与其他事件对齐,从长远来看减少 CPU 唤醒(特别是如果超时再次发生)并为地球节省能源(!)

于 2009-08-20T23:30:22.347 回答