PyQt에서 람다 표현식을 사용하여 슬롯 연결
Qt에서는 람다 표현식을 사용하여 신호를 슬롯에 연결할 수 있습니다. 그러나 이 접근 방식에는 예상치 못한 동작이 발생할 수 있는 몇 가지 제한 사항이 있습니다.
문제:
람다 식을 사용하여 여러 버튼을 동일한 슬롯에 연결할 때 마지막 연결이 올바르게 작동합니다. 특히 connect()에 대한 개별 호출을 통해 수동으로 연결된 버튼은 성공한 반면, 람다 식을 사용하여 루프로 연결된 버튼은 모두 동일한 잘못된 결과를 생성합니다.
분석:
신호가 실행될 때 람다 식이 평가되고 선택적 인수의 값이 신호의 인수로 덮어쓰기 때문에 문제가 발생합니다. QPushButton.clicked 신호의 경우 이 인수는 버튼의 상태를 나타냅니다.
해결책:
문제를 해결하려면 람다 표현식을 수정해야 합니다. 다음과 같습니다:
button.clicked.connect(lambda state, x=idx: self.button_pushed(x))
람다 표현식의 첫 번째 인수로 상태를 추가하면 상태를 무시할 수 있습니다. 여전히 idx의 의도된 값이 슬롯에 전달되도록 허용합니다.
람다 표현식 연결 이해:
람다 표현식을 사용하여 신호를 연결하면 다음이 생성됩니다. 신호가 실행될 때마다 평가되는 익명 함수입니다. 람다 표현식의 매개변수는 신호의 인수(이 경우 버튼 상태)에 바인딩됩니다. 그런 다음 람다 식의 결과를 인수로 사용하여 슬롯이 호출됩니다.
위 내용은 람다 표현식을 사용하여 PyQt의 동일한 슬롯에 여러 버튼을 연결하면 예기치 않은 동작이 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!