Уведомления

Группа в Telegram: @pythonsu

#1 Март 11, 2013 10:21:55

_alexs_
Зарегистрирован: 2012-04-02
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема передачи данных в сигнале

Есть долгоиграющий процесс, реализованный в виде класса-менеджера 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

Офлайн

#2 Март 11, 2013 10:50:26

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

Проблема передачи данных в сигнале

Уверены, что после self.mapCreated должны быть скобки?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version