什么是GTK中的timeout_id?

mbo*_*ork 1 gtk pygobject

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

self.timeout_id = None
Run Code Online (Sandbox Code Playgroud)

(它__init__属于Gtk.Window-descendant类的功能;整个列表在这里).我不能谷歌呢; 这是为了什么?

Tho*_*ele 5

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

它被赋予GObject.timeout_add的返回值,它添加了一个稍后调用的函数,可能是重复的(如本例所示):

        self.timeout_id = GObject.timeout_add(100, self.do_pulse, None)
Run Code Online (Sandbox Code Playgroud)

如果您不希望再次调用此超时,则必须将其删除,并且要执行此操作,您需要创建超时的id:

        GObject.source_remove(self.timeout_id)
Run Code Online (Sandbox Code Playgroud)

  • 对我而言,它根本不起全局变量的作用.实际上,如果这是我的代码,我会通过在其前面添加下划线来指示该变量对于该对象是私有的.仅仅因为在这个应用程序中只有这个类的一个对象,不会使它的实例变量扮演全局变量的角色. (2认同)