如何使用PyGTK显示一个持续更新的计时器?

1 投票
2 回答
1079 浏览
提问于 2025-04-15 19:15

我正在用Python和PyGTK写一个计时器程序,精确到百分之一秒。目前,我是用一个不断更新的标签来显示时间。这就有点问题了,因为当计时器在运行时,如果我调整窗口的大小,Pango(一个处理文本的工具)经常会出现一些奇怪的错误,导致我的程序崩溃。每次出现的错误都不一样,我猜这些都是某种绘制失败的错误。而且,随着我增大字体,标签更新的速度也越来越慢。

所以,我在想有没有更好的方法来显示计时器。有没有比不断更新标签更稳定的方式呢?

2 个回答

2

更新一个标签应该是非常可靠的,所以我怀疑你可能在其他地方出了问题。你在使用线程吗?你的代码是什么样子的?你能把你的程序缩小到多小(通过去掉一些功能,而不是让代码变得难懂),而不影响问题的存在呢?

2

我找到了问题所在。确实是线程出了问题。我自己是绝对想不到的。解决的办法是用 gobject.timeout_add() 来创建一个定时器,而不是使用线程循环。下面是关于 gobject.timeout_add() 的一些信息:

http://faq.pygtk.org/index.py?req=show&file=faq01.021.htp

别忘了让你的函数返回 True,不然定时器会停止。

撰写回答