次の問題があります。私は最後にいくつかの余分なデータを渡すために信号にラムダ関数を接続しようとしています。PyQTラムダ関数をシグナルに接続
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(),
を実行すると、私はこのエラーを取得:
self.connect(timeComboBox, SIGNAL("currentIndexChanged(int)"),self.test)
に
self.connect(timeComboBox, SIGNAL("currentIndexChanged(int)"),cmd)
を変更
TypeError: 'int' object is not callable
が正常に動作しますが、私のことができるようにしたいと思いますを渡す私は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
誰もが考えていると思いますか?何か提案ありがとう!これはあなたのために働く場合 乾杯 デイブ
おかげさまでありがとうございました。それを説明してくれてありがとう! –
私から、あなたはどのようにパラメータが上書きされたのを知ったのですか?シグナルはQtで動作します。 – user1767754
@ user1767754スロットは同じまたはより少ない引数を持つことができ、余分なものは無視されます。しかし残りのものは渡されます。あなたがその引数のデフォルトを持っているかどうかは関係ありません。シグナルが引数を渡すと、スロットはできるだけそれを受け取ります。 – Avaris