我应该如何使用 PyGTK 显示不断更新的计时器?

发布于 2024-08-20 23:40:55 字数 222 浏览 9 评论 0原文

我正在使用 PyGTK 用 Python 编写一个计时器程序。它精确到百分之一。现在,我正在使用不断更新的标签。这是一个问题,因为如果我在计时器运行时调整窗口大小,Pango 通常会抛出一些疯狂的错误,并且我的程序会终止。这并不总是相同的错误,但我认为是某种形式的失败绘制的不同错误。此外,当我增加字体大小时,标签更新得越来越慢。

所以,我想知道是否有更正确的方法来显示计时器。有没有比不断更新标签更稳定的方法呢?

I am writing a timer program in Python using PyGTK. It is precise to the hundredths place. Right now, I am using a constantly updated label. This is a problem, because if I resize the window while the timer is running, Pango more often than not throws some crazy error and my program terminates. It's not always the same error, but different ones that I assume are some form of failed draw. Also, the label updates slower and slower as I increase the font size.

So, I am wondering if there is a more correct way to display the timer. Is there a more stable method than constantly updating a label?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

滥情空心 2024-08-27 23:40:55

更新标签应该可以完美可靠地工作,所以我怀疑您做错了其他事情。你使用线程吗?你的代码是什么样的?在不让问题消失的情况下,您可以将程序压缩到多小(通过删除功能,而不是混淆代码)?

Updating a label should work perfectly reliably, so I suspect you're doing something else wrong. Are you using threads? What does your code look like? How small can you condense your program (by removing functionality, not by obfuscating the code), without making the problem go away?

ゞ花落谁相伴 2024-08-27 23:40:55

我发现了问题所在。确实是线程的问题。我自己绝对不会想到这一点。技巧是使用 gobject.timeout_add() 创建计时器而不是线程循环。以下是有关 gobject.timeout_add() 的一些信息:

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

不要忘记让你的函数返回 True,否则计时器将停止。

I figured out the problem. It was indeed a problem with the threads. I never would've guessed that myself. The trick is to use gobject.timeout_add() to create a timer instead of a threaded loop. Here is some information about gobject.timeout_add():

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

Don't forget to have your function return True, or the timer will stop.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文