2009-08-20 4 views

Répondre

14

Vous pouvez utiliser glib.timeout_add(interval, callback, ...) pour appeler périodiquement une fonction.

Si la fonction renvoie True, elle sera appelée à nouveau après l'intervalle; Si la fonction renvoie False, elle ne sera plus appelée.

Voici un court exemple d'ajouter un délai d'attente après de un widget Montrer l'événement:

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 parce que vous avez effectivement ajouté un lien vers la documentation officielle. Les gens devraient le faire plus souvent. –

9

Si le temps n'est pas critique pour être exact au dixième de seconde, utilisez

glib.timeout_add_seconds(5, ..) 

autrement comme ci-dessus.

timeout_add_seconds permet au système d'aligner les délais d'attente à d'autres événements, à long terme la réduction des redémarrages CPU (surtout si le délai d'attente est reocurring) et save energy for the planet (!)

Questions connexes