Domanda

Ho del codice:

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

Questo è progettato per mostrare un conteggio da 1 a 10 secondi sullo schermo in disordine, ma sto ricevendo uno strano errore. Quando eseguo lo script normalmente lo schermo viene eseguito come dovrebbe, ma non viene visualizzato alcun testo fino a quando non sono trascorsi 10 secondi. Tuttavia, quando corro con punti di interruzione in pdb, il testo appare bene.

All'inizio del programma viene visualizzato anche uno strano errore:

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

Ma non vedo perché ciò influirebbe sul codice dai punti di interruzione ma non nei punti di interruzione.

Qualsiasi aiuto sarebbe molto apprezzato.

È stato utile?

Soluzione

Non sono sicuro di aver già capito la risposta a questo, ma:

Il motivo per cui stai riscontrando questo problema è perché stai bloccando il thread principale (dove si verifica tutto il disegno) con le tue chiamate time.sleep (), impedendo alla libreria di ridisegnare lo schermo.

es. il tuo codice sta attualmente eseguendo questa operazione:

  1. Il disordine ridisegna lo schermo.
  2. Passi oltre dieci secondi e cambi il testo dieci volte.
  3. Il disordine ridisegna lo schermo.

Se vuoi mettere in coda qualcosa su un timer, dovresti esaminare gobject.timeout_add .

Altri suggerimenti

Hai provato la pubblicazione (o ricerca ) nella mailing list di Clutter? Qui c'è qualcuno che ha ricevuto lo stesso messaggio su drmWaitVBlank per esempio.

Suppongo che la maggior parte delle persone su SO non abbia familiarità con la risoluzione dei problemi di Clutter. So di non essere :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top