【发布时间】:2015-10-22 20:07:59
【问题描述】:
我遇到了以下问题。我正在尝试将 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 的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
我希望这是有道理的 - 有人有什么想法吗?感谢您的任何建议! 干杯 戴夫
【问题讨论】: