クラッターはブレークポイントの外で画面を更新しません
-
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()呼び出しで(すべての描画が発生する)メインスレッドをブロックし、ライブラリが画面を再描画できないようにするためです。
E.g。あなたのコードは現在これを行っています:
- クラッターは画面を再描画します。
- 10秒間ループし、テキストを10回変更します。
- クラッターは画面を再描画します。
タイマーで何かをキューに入れたい場合は、 gobject.timeout_add 。
所属していません StackOverflow