2009-08-20 8 views

Odpowiedz

14

Można użyć glib.timeout_add(interval, callback, ...) do okresowego wywoływania funkcji.

Jeśli funkcja zwróci True, po upływie tego czasu zostanie wywołana ponownie; jeśli funkcja zwróci False, to nie będzie ponownie wywoływana.

Oto krótki przykład dodając timeout po widgetu pokazać wydarzenie:

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 bo rzeczywiście dodany link do oficjalna dokumentacja. Ludzie powinni to robić częściej. –

9

Jeśli czas nie jest krytyczny, a dokładnie do dziesiątej sekundy, użyj

glib.timeout_add_seconds(5, ..) 

poza powyższym.

timeout_add_seconds pozwala dostosować system do timeoutów do innych wydarzeń, na dłuższą metę zmniejszenie wybudzeń procesora (szczególnie jeśli timeout reocurring) i save energy for the planet (!)

Powiązane problemy