2009-08-20 49 views

回答

14

您可以使用glib.timeout_add(interval, callback, ...)定期調用一個函數。

如果函數返回那麼它將在間隔後再次被調用;如果函數返回False那麼它將不會再被調用。

這裏是後加上超時的簡單例子Widget的顯示事件:

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() 
+2

+1,因爲你實際上已經增加了一個鏈接到官方文件。人們應該更頻繁地這樣做。 – 2011-07-21 05:39:07

9

如果時間不是關鍵是精確到十分之一秒,使用

glib.timeout_add_seconds(5, ..) 

其他如上。

timeout_add_seconds允許系統對準超時其他事件,從長遠來看,減少CPU喚醒(尤其是如果超時reocurring)和save energy for the planet(!)