gpt4 book ai didi

python - 如何在 py-gtk 窗口中显示连续数据?

转载 作者:太空宇宙 更新时间:2023-11-04 10:53:38 24 4
gpt4 key购买 nike

我正在尝试使用 py-gtk 构建一个简单的秒表应用程序。这是秒表窗口中切换按钮的回调函数。

def start(self,widget):
if widget.get_active():
widget.set_label('Stop')
else:
self.entry.set_text(str(time.time() - s))
widget.set_label('Start')

除了时间不会连续显示在条目小部件中之外,它工作得非常好。如果我在“If”条件中添加一个无限循环,

while 1:
self.entry.set_text(str(time.time() - s))

窗口变得无响应。有人可以帮忙吗?

最佳答案

使用gobject.timeout_add :

gobject.timeout_add(500, self.update)

让 gtk 每 500 毫秒调用一次 self.update()

update 方法中检查秒表是否激活并调用

self.entry.set_text(str(time.time() - s))   

根据需要。


这是一个相当简短的示例,它使用 gobject.timeout_add 绘制了一个进度条:

import pygtk
pygtk.require('2.0')
import gtk
import gobject
import time

class ProgressBar(object):
def __init__(self):
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)
gobject.timeout_add(100, self.timeout)
def timeout(self):
self.val += 1
# time.sleep(1)
self.scale.set_value(self.val)
return True

def demo_timeout_add():
# http://faq.pygtk.org/index.py?req=show&file=faq23.020.htp
# http://stackoverflow.com/a/497313/190597
win = gtk.Window()
win.set_default_size(300, 50)
win.connect("destroy", gtk.main_quit)
bar = ProgressBar()
win.add(bar.scale)
win.show_all()
gtk.main()

demo_timeout_add()

关于python - 如何在 py-gtk 窗口中显示连续数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11819952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com