How to run function 5 seconds after pygtk widget is shown?
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()
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(!)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With