Беспорядок не обновляет экран за пределами точек останова
У меня есть код:
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 ответа
Не уверен, что вы уже нашли ответ на этот вопрос, но:
Причина, по которой вы столкнулись с этой проблемой, заключается в том, что вы блокируете основной поток (где происходит рисование) вызовами time.sleep(), не позволяя библиотеке перерисовывать экран.
Например, ваш код в настоящее время делает это:
- Беспорядок перерисовывает экран.
- Вы зациклились на десять секунд и изменили текст десять раз.
- Беспорядок перерисовывает экран.
Если вы хотите поставить что-то в очередь по таймеру, вы должны заглянуть в gobject.timeout_add.
Вы пробовали публиковать (или искать) в списке рассылки Clutter? Вот кто-то, кто получил такое же сообщение о drmWaitVBlank, например.
Я предполагаю, что большинство людей на SO не знакомы с решением проблем Clutter. Я знаю, что я не :)