[PyQt] QRunnable issue

Hans-Peter Jansen hpj at urpla.net
Fri Jul 22 20:39:21 BST 2011

On Monday 18 July 2011, 20:36:53 Jeremy Sanders wrote:
> Hi - I'm having problems with the following code where a QRunnable
> emits a signal then ends. If you click the button it should print
> 1,2,3. It sometimes works for the first few times but the wrong
> number of arguments is given to the slot after that.
> Is this a PyQt bug? 

I can confirm, that there are issues with your code. At least as long as 
you use old style signals and slots.

If you're interested in how this _could_ look nowadays, see attached 
script runnable2.py. While at it, I pimped up the code a bit in order 
to exercise the signal and slot mechanics a bit harder. It not only 
looks smarter, it delivers a million signals per push without a hitch, 
if you call it like this: python runnable2.py 1000

Compare this with running: python runnable2-old.py 
This should deliver 100 signals, but most of the time, PyQt misses to 
deliver the arguments for the signals at all. It might take a few 
pushes and some scrolling back to see some of them.

> I'm using 4.8.3 on Ubuntu (x86). I've tried 
> setting autodelete on the runnable to be false but that causes a
> crash.

Well, you missed to tell us about the versions you use, and I'm too lazy 
to look them up now.. Anyway, I think, that there are some races in the 
old style signal and slot argument handling code. 

Looks like Phils call..


python: 2.6.2
sip: 4.12.3
qt4: 4.7.1
pyqt4: 4.8.4
-------------- next part --------------
A non-text attachment was scrubbed...
Name: runnable2.py
Type: application/x-python
Size: 1554 bytes
Desc: not available
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20110722/70ca802b/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: runnable2-old.py
Type: application/x-python
Size: 1507 bytes
Desc: not available
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20110722/70ca802b/attachment-0001.bin>

More information about the PyQt mailing list