[PyQt] converting old signal/slot to new signal/slot

Baz Walter bazwal at ftml.net
Wed May 27 19:06:35 BST 2015

On 27/05/15 16:43, c c wrote:
> I've also looked at the Qt documentation for QtAssistant and I cant
> see a change between Qt4 and Qt5 Qobject connect() method so I'm at a
> loss as to why we have the new signal/slot system in PyQt5 (I am
> aware that it was introduced in Qt4. I'm sure as I get to grips with
> pyQt / pyQt5 the reson will become apparent but I'm a long way off of
> that) Hopefully someone can provide guidance and show me the light.

As you say, the new-style signal and slot syntax was introduced in 
PyQt4. I think that would have been with version 4.5, though, and so the 
old-style syntax had to be maintained alongside it for the purposes of 
backwards compatibility. The new-style syntax has been around for almost 
six years, now - so it's hardly "new" any more.

Why introduce the new-style syntax? Well, the old-style syntax is 
verbose, difficult to get right (especially if you don't know C++), and 
does not raise errors if you get it wrong. The new-style syntax is 
simply much more pythonic, and, now that PyQt5 can break compatibility 
with PyQt4, there is no need to maintain support for the old-style 
syntax - and so it has gone. In most other respects, though, PyQt5 is 
still very similar to PyQt4, and so porting is not usually a significant 

For more details, I suggest you go to the PyQt5 docs and read through 
the "Support for Signals and Slots" section:


and the "Differences Between PyQt4 and PyQt5" section:


If you want up-to-date example code, download the PyQt source from here:


and consult the README file in the examples directory.

Baz Walter

More information about the PyQt mailing list