다음 문제가 발생합니다. 결국 여분의 데이터를 전달하기 위해 람다 함수를 Signal에 연결하려고합니다. 내가 createTimeComboBox(),
을 실행하면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
는이 오류 얻을 :
TypeError: 'int' object is not callable
이
self.connect(timeComboBox, SIGNAL("currentIndexChanged(int)"),self.test)
잘 작동
에self.connect(timeComboBox, SIGNAL("currentIndexChanged(int)"),cmd)
변경을,하지만 난 수 있도록하고 싶습니다를 전달하십시오.변수도 마찬가지이므로 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