定期调用pygtk主循环中的函数

hou*_*uqp 7 python pygtk

什么是tkinter中after方法的pygtk等价物?

我想定期在主循环中调用一个函数.

有什么更好的方法来实现它?

unu*_*tbu 16

使用gobject.timeout_add:

import gobject
gobject.timeout_add(milliseconds, callback)
Run Code Online (Sandbox Code Playgroud)

例如,这是一个timeout_add用于更新progress(HScale)值的进度条:

import gobject
import gtk

class Bar(object):
    def __init__(self,widget):
        self.val=0
        self.scale = gtk.HScale()
        self.scale.set_range(0, 100)
        self.scale.set_update_policy(gtk.UPDATE_CONTINUOUS)
        self.scale.set_value(self.val)
        widget.add(self.scale)
        gobject.timeout_add(100, self.timeout)
    def timeout(self):
        self.val +=1
        self.scale.set_value(self.val)
        return True

if __name__=='__main__':
    win = gtk.Window()
    win.set_default_size(300,50)
    win.connect("destroy", gtk.main_quit)
    bar=Bar(win)
    win.show_all()
    gtk.main()
Run Code Online (Sandbox Code Playgroud)

  • @houqp:它们是相同的功能。`gobject` 从 `glib` 导入 `timeout_add`。 (3认同)