본문 바로가기
프로그래밍 관련/PyQt

PyQt. GUI 변경을 외부쓰레드에서하는 것

by 존버매니아.임베디드 개발자 2022. 6. 15.
반응형

PyQt의 GUI 객체에서 실제 GUI를 변동시키는 메소드를 구현했을때, 이것을 외부의 쓰레드에서 직접 호출하는 경우 문제가 발생할 수 있다.

이런 경우 동작이 아예 안되거나 프로그램이 멈추거나 하는건 아닌데 경고 메세지가 뜬다.

예시를 들어 설명하겠다.

암튼 메인 page에 있는 gui를 변경하거나  하는 등의 동작을, 외부 스레드에서 하고싶다면 해당 메소드를 외부스레드에서 직접 호출하는게 아니라 유저디파인 시그널 슬롯을 사용한다.

특정 조건이 만족됐을때, 외부스레드에서 메인 gui 관련 메소드를 호출하지말고 메인 gui 객체에 시그널만 날려주자.

메인 gui객체는 이 시그널을 슬롯으로 받아서 gui 를 조작하는 메소드를 부르는 방식으로 구현하면된다.


시그널 슬롯 쓰는 방법은 아래 다른 글 참조.

반응형