【问题标题】:What is timeout_id in GTK for?GTK 中的 timeout_id 是做什么用的?
【发布时间】:2012-09-09 18:59:51
【问题描述】:

我正在阅读官方 PyGObject 教程,并在其中一个示例中发现了这一行(无法解释):

self.timeout_id = None

(它在 Gtk.Window-descendant 类的 __init__ 函数中;整个列表是 here)。我无法谷歌它;它是干什么用的?

【问题讨论】:

    标签: gtk pygobject


    【解决方案1】:

    您没有看到它在 on_pulse_toggled 中被设置并进一步使用?

    它被分配了 GObject.timeout_add 的返回值,它添加了一个在稍后的时间间隔调用的函数,可能会重复调用(如本例):

            self.timeout_id = GObject.timeout_add(100, self.do_pulse, None)
    

    当您希望不再调用此超时时,您必须将其删除,为此,您需要您创建的超时 id:

            GObject.source_remove(self.timeout_id)
    

    【讨论】:

    • 谢谢,愚蠢的我! (我没有看到它,因为我没有进一步阅读。)我猜对了吗?一般来说Gtk.Window 类中没有timeout_id“属性”,在这种情况下它本质上是(类似于)用户定义的全局变量?
    • 不,它不是全局变量。它是一个实例变量,一个对象成员。 gtk.Window 没有 timeout_id 实例变量,但即使有,它也会在这个子类中被覆盖。
    • 再次感谢。我知道这不是全局变量;我是想说它扮演一个 one 的角色(在这个短程序中,只有一个 Gtk.Window 对象)。
    • 对我来说它根本不扮演全局变量的角色。事实上,如果这是我的代码,我会通过在它前面加上下划线来表明该变量是对象私有的。仅仅因为这个应用程序中只有这个类的一个对象,并不能让它的实例变量起到全局变量的作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 2023-04-03
    • 2014-03-04
    • 2012-05-19
    • 2011-10-25
    • 2015-07-17
    • 2014-02-26
    相关资源
    最近更新 更多