프로그래밍/PyQt5 GUI
43. 이벤트 핸들러(슬롯) 만들기
디아블로
2021. 7. 28. 16:40
이벤트(시그널)을 처리할 때 사용되는 함수를 이벤트 핸들러(슬롯)라고 합니다.
'Big', 'Small' 버튼을 클릭시 (시그널이 발생), 창의 크기가 바뀌도록 하는 함수(슬롯)를 정의해 보겠습니다.
43-1. 예제: ex42
import sys from PyQt5.QtWidgets import (QApplication, QWidget, QLCDNumber, QDial, QVBoxLayout, QHBoxLayout, QPushButton) class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): lcd = QLCDNumber(self) dial = QDial(self) btn1 = QPushButton('Big', self) btn2 = QPushButton('Small', self) hbox = QHBoxLayout() hbox.addWidget(btn1) hbox.addStretch(1) hbox.addWidget(btn2) vbox = QVBoxLayout() vbox.setContentsMargins(0, 0, 0, 0) vbox.addWidget(lcd) vbox.addWidget(dial) vbox.addLayout(hbox) self.setLayout(vbox) dial.valueChanged.connect(lcd.display) btn1.clicked.connect(self.resizeBig) btn2.clicked.connect(self.resizeSmall) self.setWindowTitle('Signal and Slot') self.setGeometry(200, 200, 200, 250) self.show() def resizeBig(self): self.resize(400, 500) def resizeSmall(self): self.resize(200, 250) if __name__ == '__main__': app = QApplication(sys.argv) ex = MyApp() sys.exit(app.exec_()) |
43-2 설명
btn1.clicked.connect(self.resizeBig) btn2.clicked.connect(self.resizeSmall) |
btn1과 btn2는 각각 resizeBig, resizeSmall 슬롯에 연결되어 있습니다.
def resizeBig(self): self.resize(400, 500) def resizeSmall(self): self.resize(200, 250) |
resizeBig() 메서드는 화면 크기를 가로 400px, 세로 500px로 확대, resizeSmall() 메서드는 화면 크기를 가로 200px, 세로 250px로 축소하는 기능을 수행합니다.
43-3 결과