我遇到了以下问题。我正在尝试将lambda函数连接到Signal以传递一些额外的数据。
提示:lambda函数是一种匿名函数,可以在代码中直接使用而不必定义名称。
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
的clicked()
信号也是这样做的,而且效果很好。
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
我希望这有意义 - 有人有任何想法吗?感谢任何建议!祝福 戴夫