私は次の問題で立ち往生しています。最終的に追加のデータを渡すために、ラムダ関数をシグナルに接続しようとしています。
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
これが理にかなっていることを願っています-誰かアイデアはありますか? ご提案ありがとうございます。乾杯デイブ