[PyQt] New style signal connect not working

Tony Arnold tony.arnold at manchester.ac.uk
Thu Feb 5 19:16:41 GMT 2015


I have an application with a QTableView and I am trying to connect the
currentRowChanged signal to a slot. When I use the old style, it works,
but the newer style does not.

Here is the code to connect the signal using the old style:

self.connect(self.competitionView.selectionModel(),
                  SIGNAL("currentRowChanged(QModelIndex,QModelIndex)"),
                    self.competitionChanged)

and the slot is defined as:

    def competitionChanged(self, index):

This works fine.

But if I connect the signal with the preferred new style so:

self.competitionView.selectionModel().currentRowChanged.connect(self.competitionChanged)

Then an exception gets raised when the slot gets called. I get the
following error:

The debugged program raised the exception unhandled TypeError
"competitionChanged() missing 1 required positional argument: 'index'"

I am using PyQt4 and python 3.4 with Qt 4.8.6

Any suggestions where I might be going wrong?

Regards,
Tony.
-- 
Tony Arnold, IT Security Analyst, University of Manchester.
T: +44 (0) 161 275 6093, F: +44 (0) 705 344 3082,
M: +44 (0) 773 330 0039, E: tony.arnold at manchester.ac.uk


More information about the PyQt mailing list