💎

003 슬롯(이벤트 함수)을 이용한 LCD 전광판 만들기

1. 코드

from PyQt5.QtWidgets import QWidget, QLCDNumber, QSlider, QVBoxLayout, QApplication,\ QPushButton, QLabel from PyQt5.QtCore import Qt, QCoreApplication import sys class 전광판만들기(QWidget): def __init__(self): super().__init__() self.UI초기화() def UI초기화(self): lcd = QLCDNumber(self) self.slider = QSlider(Qt.Horizontal, self) self.label = QLabel(self) self.slider.valueChanged.connect(lcd.display) self.slider.valueChanged.connect(self.setValue) btn1 = QPushButton('초기화') btn2 = QPushButton('종료') btn1.clicked.connect(self.changeValue) btn2.clicked.connect(self.exitProgram) vbox = QVBoxLayout() vbox.addWidget(lcd) vbox.addWidget(self.slider, alignment=Qt.AlignCenter) vbox.addWidget(self.label, alignment=Qt.AlignCenter) vbox.addWidget(btn1) vbox.addWidget(btn2) self.setLayout(vbox) self.setGeometry(300, 300, 300, 400) self.setWindowTitle('Signal and Slot') self.show() def changeValue(self): self.slider.setValue(0) self.label.setText(str(self.slider.value())) def setValue(self): self.label.setText(str(self.slider.value())) def exitProgram(self): QCoreApplication.instance().quit() # super().close() 이것도 사용가능 프로그램무한반복 = QApplication(sys.argv) 실행인스턴스 = 전광판만들기() 프로그램무한반복.exec_()

2. 상세 내용

lcd = QLCDNumber(self) self.slider = QSlider(Qt.Horizontal, self) self.label = QLabel(self) self.slider.valueChanged.connect(lcd.display) self.slider.valueChanged.connect(self.setValue) btn1 = QPushButton('초기화') btn2 = QPushButton('종료') btn1.clicked.connect(self.changeValue) btn2.clicked.connect(self.exitProgram)
  • QLCDNumber() : 숫자lcd 위젯
  • valueChanged : 값이 변하면 시그널을 보냄
  • lcd.display : 내장 함수로서 슬라이더값과 연동해 숫자를 보여주는 기능
  • 지금까지의 강의에서 이미 정의된 함수를 사용한 것을 제외한 만든 함수가 우리가 만든 사용자 정의 슬롯(이벤트 핸들러,함수)
def changeValue(self): self.slider.setValue(0) self.label.setText(str(self.slider.value())) def setValue(self): self.label.setText(str(self.slider.value())) def exitProgram(self): QCoreApplication.instance().quit() # super().close 이것도 사용가능
  • 위와 같은 함수가 우리가 만든 슬롯
  • 결국, 전체적인 흐름을 보자면 어떤 객체가 동작될 때 시그널을 보내 그 시그널과 슬롯을 연결시켜 원하는 이벤트를 처리하는것

3. 실행 화면

 
notion imagenotion image
notion imagenotion image