주제: [PyQt 프로그래밍] 파이썬으로 GUI 만들기 [2] pyqt 시그널과 슬롯 이해하기 작성: 2023-10-16 버전: python 3.9 / PyQt6 6.5.2
PyQt는 강력한 Qt C++ 크로스 플랫폼 프레임워크와 유연한 Python 프로그래밍 언어를 원활하게 통합하는 브리지로서, 주로 강력한 GUI 모듈 역할을 합니다.
시그널, 슬롯 그리고 커넥션...?
PyQt에 많은 경험은 없지만, 최근 간단한 GUI 표출하면서 사용을 해봤습니다.사실 Qt에 대한 이해없이 기능구현 실습위주로 진행하다보니 Qt의 기본적인 작동개념조차 모르고 있었습니다. 그러다 우연히 직장동료분을 통해서 코드점검 받다가, "시그널과 슬롯은 뭐로 지정한거야?" 라는 질문에 '시..시그널? 슬롯? 그게 뭐지...?' 하면서 해당 포스팅을 준비하게 되었습니다.
Qt 이벤트 처리 및 통신 메커니즘
PyQt를 사용하려면, Qt의 핵심개념인 시그널(Signal)과 슬롯(Slot)의 이해가 필요합니다. 시그널(Signal)과 슬롯(Slot)은 이벤트 처리 및 통신 메커니즘을 제공하는 핵심 개념으로, 시그널은 어떤 이벤트나 상태 변경을 나타내며, 슬롯은 시그널을 처리하는 함수나 메서드입니다.정의만 보면 되게 어렵게 느껴지만, 매우 간단한 개념입니다.
예를들어, 아래의 그림처럼 체크박스가 있다고 가정해봅시다.
사용자가 특정 체크박스를 클릭 했을 때, 클릭한 상태를 파악하는 것이 '시그널' 입니다. 이러한 변화에 따라 체크된 데이터를 테이블 또는 지도로 표출하는 일을 처리하는 함수가 '슬롯'입니다.
그리고 이 '시그널'과 '슬롯'을 연결하는 것이 '연결(connect)' 입니다.
정리하면 다음과 같습니다
시그널(Signal) 객체에서 발생하는 이벤트나 상태변경
슬롯(Slot) 슬롯은 시그널을 처리하는 함수나 메서드
연결(Connect) 시그널과 슬롯은 connect 메서드를 사용하여 연결 이를 통해 시그널이 발생하면 연결된 슬롯 호출
PyQt Window창 생성하기
필자의 경우 PyQt6을 사용했습니다. PyQt5 유저는 해당 코드를 그래도 사용하는 경우, 구동이 되지않는 점 참고하시기를 바랍니다.기초예제부터 다뤄보도록 하겠습니다.
(구현) 하나의 윈도우 창을 생성하고, 해당 창의 이름을 "윈도우 제목창"으로 명명하는 어플리케이션 만들기