Беспорядок не обновляет экран за пределами точек останова - PullRequest
0 голосов
/ 19 сентября 2009

У меня есть код:

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.

Но я не понимаю, почему это повлияет на код вне точек останова, а не в точках останова.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

4 голосов
/ 31 декабря 2009

Не уверен, что вы уже нашли ответ на этот вопрос, но:

Причиной возникновения этой проблемы является то, что вы блокируете основной поток (где происходит рисование) вызовами time.sleep (), не позволяя библиотеке перерисовывать экран.

например. Ваш код в настоящее время делает это:

  1. Беспорядок перерисовывает экран.
  2. Вы повторяете цикл в течение десяти секунд и меняете текст десять раз.
  3. Беспорядок перерисовывает экран.

Если вы хотите поставить что-то в очередь по таймеру, вам следует обратиться к gobject.timeout_add .

0 голосов
/ 19 сентября 2009

Вы пробовали публиковать (или искать ) в списке рассылки Clutter? Здесь кто-то, например, получил то же сообщение о drmWaitVBlank.

Полагаю, большинство людей на SO не знакомы с решением проблем Clutter. Я знаю, что я не :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...