我遇到了以下问题。我正在尝试将 lambda 函数连接到 Signal 以最终传递一些额外的数据。
def createTimeComboBox(self,slotCopy):
timeComboBox = QComboBox()
#...
cmd = lambda func=self.test:func()
self.connect(timeComboBox, SIGNAL("currentIndexChanged(int)"),cmd)
#...
def test(self, value):
print value
当我运行时,createTimeComboBox(),
我收到此错误:
TypeError: 'int' object is not callable
改变
self.connect(timeComboBox, SIGNAL("currentIndexChanged(int)"),cmd)
到
self.connect(timeComboBox, SIGNAL("currentIndexChanged(int)"),self.test)
工作正常,但我也希望能够传递slotCopy
变量,所以假设我需要使用这种lambda
方法。
我以前用QPushButton
'sclicked()
信号做过这个,效果很好。
def createToDoctorButton(self,extraData):
toDoctorButton = QPushButton()
cmd = lambda func=self.goToDoctor:func(extraData)
self.connect(toDoctorButton, SIGNAL('clicked()'),cmd)
return toDoctorButton
def goToDoctor(self,extraData):
print extraData
我希望这是有道理的——有人有什么想法吗?感谢您的任何建议!干杯戴夫