[python] update gui,vlakno

petr na scribus.info petr na scribus.info
Pondělí Září 20 15:12:24 CEST 2010


On Mon, 20 Sep 2010 13:35:30 +0200, vepro <p.zlamal na gmail.com> wrote:
> Zkousim napsat aplikaci, ktera prijma data po seriove lince a ty pak
> zobrazuje v gui (qt4). Prijmaci cast resim jako smycku v samostatnem
> vlakne a narazil jsem na problem v obnoveni gui (bezici v "hlavnim
> vlakne"). Pokud zapisu novou hodnotu v mericim vlakne na nejaky gui
> prvek (konkretne QLCDNumber.display()) dojde k jeho aktualizaci jen v
> nejakych pripadech a ne vzdy, tak jak bych potreboval. Lze toto resit
> nejak elegatne?

jak prijimaci vlakno komunikuje s gui casti?

Pokud s Qt4 pouzivas vlakna, pak tato vlakna nesmi nastavovat gui
primo, ale treba pomoci signalu a slotu. Tj. nelze (pseudokod):

# class Worker
...
   def foo():
      mylcd.display(bar)

protoze mylcd je alokovane v gui event loopu, tudiz se data sice
zobrazit mohou, ale take nemusi, anebo to cely zbuchne na rypak.

   def foo():
      emit dataAvailable(bar)

# class Gui
   conect(worker, SIGNAL(dataAvailable(int)), self,
SLOT("worker_dataAvailable(int)))


   def worker_dataAvailable(value):
      mylcd.display(value)

p.



Další informace o konferenci Python