0
두 개의 버튼이 있습니다. 사용자가이를 클릭하고 FileDiagloag를 열어 파일을 선택합니다. 사용자가 두 파일을 선택해야하지만 하나의 기능으로 두 버튼 호출을 모두 처리해야합니다.동일한 콜백 함수 두 개의 인수에 두 개의 버튼을 연결하십시오.
QtCore.QObject.connect(self.ui.Button_SelectJoinFiles_1, QtCore.SIGNAL('clicked()'), self.SelectLogFileToJoin(1))
QtCore.QObject.connect(self.ui.Button_SelectJoinFiles_2, QtCore.SIGNAL('clicked()'), self.SelectLogFileToJoin(2))
그리고 기능은 기본적으로 같은 것입니다 : 그래서 내 초기화에 내가 가진
def SelectLogFileToJoin(self, ButtonNum):
if(ButtonNum==1):
......
if(ButtonNum==2)
.....
하지만이 프로그램을 시작할 때 나에게 파일을 제공하여 시작하기 때문에이 작동하지 않습니다 선택 대화 상자.
누군가 콜백 함수에 인수를 전달하는 방법을 알려주시겠습니까?
'partial'이 경우에 과잉이다. 클로저 꽤 충분합니다 :)'connect (..., lambda : self.SelectLogFileToJoin (1))' – astynax
@astynax 잔인 함? 람다 (lambda)를 사용하는 것은 부분적인 기능을 수행하도록 바퀴를 다시 만드는 덜 분명한 방법입니다. –
하나의 인수로 함수를 부분적으로 적용하는 것이 좋습니다. :)'partial'은 많은 (키워드) 인수가있는 함수의 부분적인 적용에 좋습니다. 그리고 그것은 람다보다 훨씬 낮은 효율성을 가지고 있습니다. 람다 함수는 콜백을위한 좋은 후보이다. 그리고 내 람다 클로저는 깨끗하게 보입니다 (IMHO). – astynax