Clutter не обновляет экран за пределами точек останова

StackOverflow https://stackoverflow.com/questions/1446554

Вопрос

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

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(), не позволяя библиотеке перерисовывать экран.

Например.ваш код в данный момент делает это:

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top