[PyQt] How to get Qt signals delivered to a pure python thread.
Giuseppe Corbelli
giuseppe.corbelli at copanitalia.com
Thu Jan 8 09:13:50 GMT 2015
On 08/01/2015 09:00, Ilya Kulakov wrote:
> Thank you for all your response!
>
> So you're saying that DirectConnect is perfectly safe when connecting from
> a thread without qeventloop?
If you connect a slot of ThreadB to the (ie) QClipboard.changed signal with
DirectConnection, the slot will be called (as direct function call) in the
thread where QClipboard lives in, likely the main thread. Synchronization must
be handled manually.
> More Qt question rather than pyqt, but is it possible to control run time
> of an event loop? According to docs, there is just a blocking exec function and
> it's not possible to run qeventloop for N seconds (as e.g. Cocoa's CFRunLoop).
Yes, but you can repeatedly call processEvents() in a while loop and
constantly check the elapsed time.
> Another approach that I tried is to have a proxy qobject that is moved to
> the main thread just after creation and then uses simple python callbacks to
> invoke methods of my other-thread object. Is it better than DirectConnect?
Again, synchronization must be handled. You may also consider a mailbox
(synchronized queue). Push data from the main thread and pop from the secondary.
--
Giuseppe Corbelli
WASP Software Engineer, Copan Italia S.p.A
Phone: +390303666318 Fax: +390302659932
E-mail: giuseppe.corbelli at copanitalia.com
More information about the PyQt
mailing list