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

12 投票
2 回答
3731 浏览
提问于 2025-04-15 13:45

如何在pygtk窗口显示后5秒钟运行一个函数?

2 个回答

9

如果时间不需要精确到十分之一秒,可以使用

glib.timeout_add_seconds(5, ..)

否则就像上面说的那样。

timeout_add_seconds 这个功能可以让系统把超时设置和其他事件对齐,从长远来看,这样可以减少CPU的唤醒次数(特别是当超时是重复发生的时候),还可以为地球节省能源(!)

16

你可以使用 glib.timeout_add(间隔时间, 回调函数, ...) 来定期调用一个函数。

如果这个函数返回 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()

撰写回答