Как запустить функцию через 5 секунд после отображения виджета pygtk?
Запуск функции через 5 секунд после появления виджета pygtk
Ответ 1
Вы можете использовать glib.timeout_add (интервал, обратный вызов,...), чтобы периодически вызывать функцию.
Если функция возвращает True, она будет вызываться снова после интервала; если функция возвращает False, то она не будет вызываться снова.
Вот краткий пример добавления тайм-аута после события showget show:
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
Если время не критично, чтобы быть точным до десятой доли секунды, используйте
glib.timeout_add_seconds(5, ..)
else, как указано выше.
timeout_add_seconds позволяет системе выровнять тайм-ауты с другими событиями, в конечном итоге уменьшая пробуждения процессора (особенно, если тайм-аут повторяется) и экономить энергию для планеты (!)