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)
- 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. 실행 화면