杂乱不会更新断点之外的屏幕
-
22-07-2019 - |
题
我有一些代码:
l1 = clutter.Label()
l1.set_position(100,100)
for i in range(0,10):
l1.set_text(str(i))
time.sleep(1)
其设计目的是在屏幕上杂乱地显示 1 到 10 秒的计数,但我遇到了一个奇怪的错误。当我正常运行脚本时,屏幕会按预期运行,但直到 10 秒后才显示任何文本。但是,当我在 pdb 中使用断点运行时,文本显示得很好。
我还在程序开始时遇到了一个奇怪的错误:
do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vlank_mode configuration parameter.
但我不明白为什么这会影响断点外的代码,但不会影响断点内的代码。
任何帮助将不胜感激。
解决方案
不确定您是否已经找到答案,但是:
您遇到此问题的原因是您通过 time.sleep() 调用阻塞了主线程(所有绘图发生的地方),从而阻止库重新绘制屏幕。
例如。您的代码当前正在执行以下操作:
- 混乱会重新绘制屏幕。
- 您循环十秒并更改文本十次。
- 混乱会重新绘制屏幕。
如果你想在计时器上排队,你应该看看 gobject.timeout_add.
不隶属于 StackOverflow