<질문>
pyqt5를 사용하고 있으며 다음과 유사한 코드를 사용하여 몇 가지 방법을 연결했습니다.
self.progress.canceled.connect(self.cancel)
예를 들어,self.cancel
is :
def cancel(self):
self.timer.stop()
이 코드는 꾸미지 않고 여러 시나리오에서 깔끔하게 작동하는 것 같습니다.cancel
와pyqtSlot
또는 그것으로 특별한 일을합니다.
내 질문은 다음과 같습니다.
- 이렇게하면 내가 잃는 것은 무엇입니까?
- 이유는 무엇입니까
pyqtSlot
필요합니까?
<답변1>
주요 목적pyqtSlot
각각 다른 서명을 가진 슬롯의 여러 다른 오버로드를 정의 할 수 있습니다. 또한 스레드 간 연결을 만들 때 필요할 수도 있습니다 (this answer그러한 시나리오 중 하나). 그러나 이러한 사용 사례는 비교적 드물며 대부분의 PyQt 응용 프로그램에서는 사용할 필요가 없습니다.pyqtSlot
조금도. 신호는 슬롯으로 장식되었는지 여부에 관계없이 모든 파이썬 호출 가능 객체에 연결할 수 있습니다.
PyQt 문서는 또한 다음과 같이 설명합니다.
데코 레이팅 된 Python 메서드에 신호를 연결하면 사용되는 메모리 양을 줄이는 이점이 있으며 약간 더 빠릅니다.
그러나 실제로 이러한 이점은 일반적으로 매우 작으며 종종 다른 요인에 의해 휩쓸 릴 것입니다. 원시 신호 속도에는 거의 영향을 미치지 않으며수천CPU로드 또는 메모리 사용에 중대한 영향을 미치기 시작하기 전에 방출 / 연결 수. 이러한 점에 대한 심층 분석은 @Schollii의이 코드 프로젝트 기사를 참조하십시오.
<답변2>
또 다른 장점은 Qt-designer 용 사용자 정의 위젯을 디자인 할 때입니다.pyqtSlot
내에서 선택할 수 있습니다Signal/Slot Editor
그렇지 않으면 코드를 작성해야합니다.
'개발 > Python' 카테고리의 다른 글
[파이썬] non PyQt 클래스에서 신호를 방출하는 방법은 무엇입니까? (0) | 2021.01.11 |
---|---|
[파이썬] PyQT의 클래스간에 pyqtSignal을 연결하는 방법 (0) | 2021.01.11 |
[파이썬] PyQt connect () 구문이 왜 그렇게 장황합니까? (0) | 2021.01.11 |
[파이썬] PyQt에서 QThread가있는 백그라운드 스레드 (0) | 2021.01.10 |