시그널과 슬롯은 이벤트 처리와 통신 메커니즘을 제공하는 PyQt의 핵심 개념이다.
시그널(signal)
- 객체에서의 어떤 이벤트나 상태 변경
- 각 위젯은 여러 시그널을 가지고 있다.
- ex) 체크박스 위젯에 대하여 이를 클릭한 상태를 파악하는 것이 시그널
슬롯(slot)
- 시그널을 처리하는 함수나 메서드
연결(connect)
- 시그널과 슬롯을 연결하는 메서드
- 시그널이 발생하면 연결된 슬롯 호출
import sys
from PyQt5.QtWidgets import *
class MainApp(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.statusBar().showMessage("")
self.btn = QPushButton('Click Me', self)
self.btn.move(20, 20)
self.btn.clicked.connect(self.onClick)
self.setWindowTitle('Signal Slot Study')
self.setGeometry(300, 300, 300, 200)
self.show()
def onClick(self):
self.statusBar().showMessage('Clicked!')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MainApp()
sys.exit(app.exec_())
버튼을 클릭하면 스테이터스 바에 메시지를 나타내는 단순한 코드
self.btn.clicked.connect(self.onClick)