[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