Как я могу передать в слот больше аргументов, которые посылает сигнал в pyqt4? - PullRequest
2 голосов
/ 23 февраля 2012

Я пишу плазмоид Python для KDE4.

У меня есть объект QHttp, который испускает сигнал "done (bool)", и я назначаю его своей функции B.Я хочу передать функции B значение A тоже.Если я передам значение, используя лямбда , сигнал никогда не вызовет функцию B.

def functionA(self):
  self.http=QHttp()
  ...
  valueA="valueA"
  self.connect(self.http, SIGNAL("done (bool)"), lambda valueA: self.functionB)
  self.get("/myurl.html")

def functionB(self, done, valueA):
  ...

Есть идеи?

1 Ответ

1 голос
/ 23 февраля 2012

Ваша лямбда не вызывает functionB. Попробуйте, если это работает:

lambda done: self.functionB(done, valueA)

EDIT. Возможно, такой подход будет лучше:

def functionA(self):
  self.http=QHttp()
  ...
  self.valueA="valueA"
  self.connect(self.http, SIGNAL("done (bool)"), self.functionB)
  self.get("/myurl.html")

def functionB(self, done, valueA=None):
  if valueA is None: 
      valueA = self.valueA
  ...
...