Portál AbcLinuxu, 8. května 2025 04:22

Dotaz: PyQt - vlákna

23.12.2008 21:34 Cebona
PyQt - vlákna
Přečteno: 471×
Odpovědět | Admin

Hledám nějaký manuál či tutorial, kde by bylo popsáno programování vláken v GUI (pomocí PyQt). Google tyto info. přede mnou poněkud tají. Děkuju.

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

mess avatar 24.12.2008 17:42 mess | skóre: 43 | blog: bordel | Háj ve Slezsku - Smolkov
Rozbalit Rozbalit vše Re: PyQt - vlákna
Odpovědět | | Sbalit | Link | Blokovat | Admin

V PyQt jsem už dlouho nedělal, ale bude to nějak takhle:

class MojeVlakno(QThread):
	def run():
		pass #tohle se provede ve vlakne

moje_vlakno = MojeVlakno();
moje_vlakno.start();

Pro více info viz: http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qthread.html

Cez párne mesiace zošíváš vaginy, cez neparne montuješ hajzle.
mess avatar 24.12.2008 17:43 mess | skóre: 43 | blog: bordel | Háj ve Slezsku - Smolkov
Rozbalit Rozbalit vše Re: PyQt - vlákna

Ty středníky tam nedávej :-D. Už mi hrabe :-).

Cez párne mesiace zošíváš vaginy, cez neparne montuješ hajzle.
24.12.2008 19:30 hanzz | skóre: 19 | blog: hanzz
Rozbalit Rozbalit vše Re: PyQt - vlákna

ono je to v podstate stejne jako pro kazda jina vlakna... Je treba dat pozor, ze samotna trida MojeVlakno zije v hlavnim vlakne aplikace (GUI vlakno), takze pokud chces pristupovat k nejakym svym definovanym objektum pro tu tridu jak z MojeVlakno::run tak z jinych mist, tak musis pouzit mutex (QMutex).

Vyhodou QThreadu je to, ze je mozne napojovat signaly mezi vlakny a to za pouziti QuedConnection signalu, ktere jsou thread-safe (nemusis se starat o mutexy atd, jen proste posles signal z worker threadu a gui thread ho prijme a nic se neposere) (viz http://doc.trolltech.com/4.4/threads.html#signals-and-slots-across-threads)

Jednoduchy priklad muzes videt treba na nasem autoaway pluginu pro Jabbim http://dev.jabbim.cz/jabbim/browser/trunk/plugins/autoaway/autoaway.py . Neni to sice nejlepsi kod, protoze je asi tak stary jako Jabbim sam a ja se to tehdy jeste ucil, ale fungovat funguje :) a ta prace z thready tam je imho v pohode.

24.12.2008 19:35 hanzz | skóre: 19 | blog: hanzz
Rozbalit Rozbalit vše Re: PyQt - vlákna

Jinak jeste dodam, ze z worker threadu samozrejme nesmis volat GUI funkce (nemuzes udelat self.parent().ui.lineEdit.setText(...)), tohle je prave idealni wrappovat pres ty signaly :). proste v tom threadu nesmis pouzivat Qt tridy pripadne funkce, ktere nejsou thread-safe (napriklad QPixmap tam pouzit nejde, ale QImage uz jo).

U me doma python-qt4-doc obsahuje mimo jine taky priklady na pouziti QThreadu. a samotna dokumentace ke Qt ma taky plno prikladu, staci si v googlu najit 'docs trolltech' a tam je hned odkaz na dokumentaci o threadech (jo, nechce se mi hledat ten link ted... :) )

28.12.2008 12:00 Cebona
Rozbalit Rozbalit vše Re: PyQt - vlákna
Odpovědět | | Sbalit | Link | Blokovat | Admin

Díky všem za info...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.