[PyQt] processevents needed for qthreads?

Andreas Pakulat apaku at gmx.de
Fri Aug 12 10:43:06 BST 2011


On 12.08.11 11:12:00, Peter Bienstman wrote:
> Hi,
> 
> I have a threaded program which works fine under Linux, but crashes sometimes 
> under Windows. My suspicion is that this is because I use 
> QtCore.QCoreApplication.processEvents, for which I read everywhere that this 
> is to be avoided and is a crutch for poor design.
> 
> Also, many tutorial examples don't seem to require processEvents, but in my 
> case, slots in the GUI main thread don't soom to get called unless I use  
> processEvents.
> 
> I'm obviously missing something about threads and Qt here, but can somebody 
> have a look at my code and see what is going wrong?

First of all, the example seems to be incomplete, there's no app.exec_()
and nothing creates a Server object.

However your problem lies in the init function of the Server. It waits
for the worker-thread to finish. Since you create the server from the
main thread as it seems you block the event processing and hence no
gui-updates and no cross-thread signals work.

This does not make any sense, since the point of a thread is to do work
in parallel and in your case your serializing everything again.

Andreas



More information about the PyQt mailing list