Question

j'ai du code:

l1 = clutter.Label()
l1.set_position(100,100)
for i in range(0,10):
    l1.set_text(str(i))
    time.sleep(1)

Ceci est conçu pour afficher un compte de 1 à 10 secondes à l'écran, mais je reçois une erreur étrange. Lorsque j'exécute le script normalement, l'écran s'exécute comme il se doit, mais aucun texte ne s'affiche jusqu'à ce que 10 secondes soient écoulées. Cependant, lorsque je cours avec des points d'arrêt dans pdb, le texte s'affiche correctement.

Je reçois également une erreur étrange au début du programme:

do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vlank_mode configuration parameter.

Mais je ne vois pas pourquoi cela affecterait le code en dehors des points d'arrêt, mais pas dans les points d'arrêt.

Toute aide serait grandement appréciée.

Était-ce utile?

La solution

Vous n'êtes pas sûr d'avoir déjà trouvé la réponse à cette question, mais:

La raison pour laquelle vous rencontrez ce problème est parce que vous bloquez le fil principal (où tout le dessin se produit) avec vos appels time.sleep (), empêchant ainsi la bibliothèque de redessiner l'écran.

E.g. votre code est en train de faire ceci:

  1. L'encombrement redessine l'écran.
  2. Vous passez en boucle pendant dix secondes et changez le texte dix fois.
  3. L'encombrement redessine l'écran.

Si vous souhaitez mettre quelque chose en file d'attente sur une minuterie, vous devez vous renseigner sur gobject.timeout_add .

Autres conseils

Avez-vous essayé de publier (ou recherche ) sur la liste de diffusion Clutter? Ici , quelqu'un qui a reçu le même message à propos de drmWaitVBlank, par exemple.

Je pense que la plupart des utilisateurs de SO ne seraient pas habitués à résoudre les problèmes d’encombrement. Je sais que je ne suis pas :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top