linux gtk_timeout_add用法,PyGTK - 超时( Timeout)

PyGTK - 超时( Timeout)

PyGTK API的gobject模块有一个很有用的功能来创建一个定期调用的超时函数。source_id = gobject.timeout_add(interval, function, …)

第二个参数是你希望在每毫秒之后调用的回调函数,它是第一个参数的值 - interval。 其他参数可以作为函数数据传递给回调。

该函数的返回值是source_id 。 使用它,回调函数停止调用。gobject.source_remove(source_id)

回调函数必须返回True才能继续重复。 因此,可以通过返回False来停止它。

在以下程序中,两个按钮和两个标签放在顶层窗口上。 一个标签显示递增的数字。 btn1调用on_click ,它以1000毫秒(1秒)的间隔设置超时功能。btn1.connect("clicked", self.on_click)

def on_click(self, widget):

self.source_id = gobject.timeout_add(1000, counter, self)

超时功能命名为counter() 。 它会在每1秒后增加标签上的数字。def counter(timer):

c=timer.count+1

print c

timer.count=c

timer.lbl.set_label(str(c))

return True

第二个按钮上的Callback删除超时功能。btn2.connect("clicked", self.on_stop)

def on_stop(self, widget):

gobject.source_remove(self.source_id)

例子 (Example)

以下是Timeout示例的完整代码 -import gtk, gobject

def counter(timer):

c = timer.count+1

print c

timer.count = c

timer.lbl.set_label(str(c))

return True

class PyApp(gtk.Window):

def __init__(self):

super(PyApp, self).__init__()

self.set_title("Timeout Demo")

self.set_size_request(300, 200)

self.set_position(gtk.WIN_POS_CENTER)

vbox = gtk.VBox(False, 5)

hbox = gtk.HBox(True, 3)

hb = gtk.HBox()

lbl1 = gtk.Label("Counter: ")

hb.add(lbl1)

self.lbl = gtk.Label("")

hb.add(self.lbl)

valign = gtk.Alignment(0.5, 0.5, 0, 0)

valign.add(hb)

vbox.pack_start(valign, True, True, 10)

btn1 = gtk.Button("start")

btn2 = gtk.Button("stop")

self.count = 0

self.source_id = 0

hbox.add(btn1)

hbox.add(btn2)

halign = gtk.Alignment(0.5, 0.5, 0, 0)

halign.add(hbox)

vbox.pack_start(halign, False, True, 10)

self.add(vbox)

btn1.connect("clicked", self.on_click)

btn2.connect("clicked", self.on_stop)

self.connect("destroy", gtk.main_quit)

self.show_all()

def on_click(self, widget):

self.source_id = gobject.timeout_add(1000, counter, self)

def on_stop(self, widget):

gobject.source_remove(self.source_id)

PyApp()

gtk.main()

执行时,窗口底部显示两个按钮。 单击“开始”按钮时,标签上的数字将定期递增,单击“停止”按钮时,它将停止递增。

观察输出 -

14cd20c25b9a1f3de3a357bc32c7248a.png

PyGTK - 标尺类( Ruler Class)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值