显示 pygtk 小部件后 5 秒运行函数

发布于 2024-08-02 15:58:42 字数 32 浏览 5 评论 0原文

如何在 pygtk 小部件显示后 5 秒运行函数?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

又爬满兰若 2024-08-09 15:58:42

您可以使用 glib。 timeout_add(interval, callback, ...) 定期调用函数。

如果函数返回True,那么它将在间隔后再次调用;如果函数返回False,则不会再次调用。

下面是在小部件的 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()

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()
自控 2024-08-09 15:58:42

如果时间不要求精确到十分之一秒,请使用

glib.timeout_add_seconds(5, ..)

上面的 else。

timeout_add_seconds 允许系统将超时与其他事件对齐,从长远来看减少 CPU 唤醒(特别是超时重复发生时)和 为地球节省能源(!)

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(!)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文