0

我有一些代码:

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.

但我不明白为什么这会影响断点外的代码,但不会影响断点内的代码。

任何帮助将不胜感激。

4

2 回答 2

4

不确定您是否已经找到了答案,但是:

您遇到此问题的原因是因为您使用 time.sleep() 调用阻塞了主线程(所有绘图发生的地方),从而阻止库重绘屏幕。

例如,您的代码当前正在执行此操作:

  1. 杂乱重绘屏幕。
  2. 你循环了十秒钟并更改了十次文本。
  3. 杂乱重绘屏幕。

如果您想在计时器上排队,您应该查看gobject.timeout_add

于 2009-12-30T22:35:11.490 回答
0

您是否尝试过在 Clutter 邮件列表上发布 (或搜索)?例如,这里有人收到有关 drmWaitVBlank 的相同信息。

我的猜测是 SO 上的大多数人都不熟悉解决 Clutter 问题。我知道我不是:)

于 2009-09-19T03:56:10.387 回答