Найти - Пользователи
Полная версия: Проблема передачи данных в сигнале
Начало » Python для новичков » Проблема передачи данных в сигнале
1
_alexs_
Есть долгоиграющий процесс, реализованный в виде класса-менеджера Analyst. Результатом работы является объект другого класса RasterMap (если это важно, реализован в другом файле).
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
truporez
Уверены, что после self.mapCreated должны быть скобки?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB