[PyQt] Simple way of signaling (like QueuedConnection) main (qt/qui) thread from python thread ?
Mateusz Korniak
mateusz at ant.gliwice.pl
Thu Apr 8 07:43:59 BST 2010
Hi !
I am trying to write simple wrapper [1] for long run tasks so they are run in
separate thread and results are signaled to main (qt/gui thread). And I have
big problem implementing final phase - sending QueuedConnection signal from
python thread to main qt(qui) thread.
Default signaling seems to work but I get my handler executed in context of
python thread instead of qt thread which is not acceptable. I am unable to use
other signal types [2].
Seems I have to create QThread(), from it running context create QObject(),
connect( , QueuedConnection) and emit() from it is.
Very complicated.
Is there any simple method which could be called safely from other linux
threads like:
emit_queued_signal(target_qobject,signature,params)
?
TIA for any help
[1]:
Invocation looks like
w = MyWrapper(ClassIWantToWrap()).
w.method_of_wrapped_class().qtsignal(some_handler)
[2]:
When I try connect QueuedConnection signals stop to work (hint:
using Qt.BlockingQueuedConnection I get: Qt: Dead lock detected while
activating a BlockingQueuedConnection: Sender is PyQtProxy(0x94a6800),
receiver is PyQtProxy(0x94b3428) ) which indicates that PyQt "thinks" I am
still in main gui thread regardless fact I am executign code in context of
another python thread.
Regards,
--
Mateusz Korniak
"(...) mam brata - poważny, domator, liczykrupa, hipokryta, pobożniś,
krótko mówiąc - podpora społeczeństwa."
Nikos Kazantzakis - "Grek Zorba"
More information about the PyQt
mailing list