Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我如何向插槽传递比信号在pyqt4中发送的参数更多的参数?_Python_Pyqt4_Signals - Fatal编程技术网

Python 我如何向插槽传递比信号在pyqt4中发送的参数更多的参数?

Python 我如何向插槽传递比信号在pyqt4中发送的参数更多的参数?,python,pyqt4,signals,Python,Pyqt4,Signals,我正在为KDE4编写python plasmoid 我有一个QHttp对象,它发出信号“done(bool)”,并将其分配给我的functionB。我也想把这个值传给函数B。如果我使用lambda传递该值,则该信号不会触发functionB def functionA(self): self.http=QHttp() ... valueA="valueA" self.connect(self.http, SIGNAL("done (bool)"), lambda valueA:

我正在为KDE4编写python plasmoid

我有一个QHttp对象,它发出信号“done(bool)”,并将其分配给我的functionB。我也想把这个值传给函数B。如果我使用lambda传递该值,则该信号不会触发functionB

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):
  ...

有什么想法吗?

您的lambda不调用functionB。如果这样做有效,请尝试:

lambda done: self.functionB(done, valueA)
编辑。也许这种方法会更好:

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
  ...

谢谢,这很有效。我还想断开连接,self.disconnect(self.http,SIGNAL(“done(bool)”),lambda done:self.functionB(done,valueA))不起作用。我该怎么做?@volk你能在我的编辑中使valueA成为一个实例变量吗?是的,我是在你的编辑中这样做的,所以我也可以简单地断开连接。非常感谢你。