class Analyst(QObject): rangeChanged = pyqtSignal(int) updateProgress = pyqtSignal() processFinished = pyqtSignal(RasterMap) def __init__(self, first, second): QObject.__init__(self) ... def createMap(self): ... self.rangeChanged.emit(rows) for i in xrange(rows): # do something self.updateProgress.emit() data = RasterMap() data.create(...) self.processFinished.emit(data)
... def createMap(self): analyst = Analyst(self.inputs["initial"], self.inputs["final"]) analyst.processFinished.connect(self.mapCreated()) def changeMapDone(self, raster): # do something with raster
Но при выполнении получают ошибку
analyst.processFinished.connect(self.mapCreated())В чем может быть проблема? Сигналы, передающие стандартные типы работают, а вот передавать объекты собственных классов не получается.
TypeError: mapCreated() takes exactly 2 arguments (1 given)
Python 2.7.3, Qt 4.8.2, PyQt 4.9.1, sip 4.13.2