Running function 5 seconds after pygtk widget is shown

后端 未结 2 1085
不知归路
不知归路 2020-12-14 23:12

How to run function 5 seconds after pygtk widget is shown?

相关标签:
2条回答
  • 2020-12-14 23:29

    You can use glib.timeout_add(interval, callback, ...) to periodically call a function.

    If the function returns True then it will be called again after the interval; if the function return False then it will not be called again.

    Here is a short example of adding a timeout after a widget's show event:

    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()
    
    0 讨论(0)
  • 2020-12-14 23:39

    If the time is not critical to be exact to the tenth of a second, use

    glib.timeout_add_seconds(5, ..)
    

    else as above.

    timeout_add_seconds allows the system to align timeouts to other events, in the long run reducing CPU wakeups (especially if the timeout is reocurring) and save energy for the planet(!)

    0 讨论(0)
提交回复
热议问题