Qt/PyQt5 강좌

pyQt5 QSlider 예제

webnautes 2024. 8. 19. 21:28
반응형

QSlider를 사용하여 생성한 5개의 슬라이더를 조정하여 5자리 정수를 조합해보는 예제입니다.

 

2024. 8. 16 최초작성






import sys 
from PyQt5.QtWidgets import QApplication, QWidget, QSlider, QVBoxLayout, QHBoxLayout, QLabel
from PyQt5.QtCore import Qt


# QWidget을 상속받는 SliderDemo 클래스 정의합니다.
class SliderDemo(QWidget): 

    # 초기화 메서드
    def __init__(self): 

        # 부모 클래스 초기화
        super().__init__() 

        # UI 초기화 메서드 호출
        self.initUI() 


    def initUI(self): 
        self.setWindowTitle('QSlider Demo'# 창 제목 설정
        self.setGeometry(300, 300, 300, 200# 창 위치와 크기 설정 ( x, y, w, h)

        layout = QVBoxLayout()  # 수직 레이아웃 생성

        self.sliders = []  # 슬라이더 리스트
        self.labels = []  # 라벨 리스트

        for i in range(5):  # 5개의 슬라이더와 라벨 생성
            slider = QSlider(Qt.Horizontal)  # 수평 슬라이더 생성
            slider.setRange(0, 9# 슬라이더 범위 설정 (0-9)
            slider.setValue(0# 초기값을 0으로 설정
            slider.setTickPosition(QSlider.TicksBelow)  # 틱 위치 설정
            slider.setTickInterval(1# 틱 간격 설정
            slider.valueChanged.connect(self.updateValue)  # 값 변경 시 이벤트 연결
            label = QLabel(f'Slider {i+1}: 0'# 라벨 생성

            self.sliders.append(slider)  # 슬라이더 리스트에 추가
            self.labels.append(label)  # 라벨 리스트에 추가

            slider_layout = QHBoxLayout()  # 수평 레이아웃 생성
            slider_layout.addWidget(slider)  # 슬라이더 추가
            slider_layout.addWidget(label)  # 라벨 추가

            layout.addLayout(slider_layout)  # 메인 레이아웃에 슬라이더와 라벨을 추가

        self.result_label = QLabel('Combined number: 00000'# 슬라이더 결과를 보여줄 라벨 생성
        layout.addWidget(self.result_label)  # 메인 레이아웃에 결과 라벨 추가

        self.setLayout(layout)  # 레이아웃 설정

    def updateValue(self):  # 값 업데이트 메서드
        combined_number = ''  # 결합된 숫자 초기화
        for i, slider in enumerate(self.sliders):  # 모든 슬라이더에 대해
            value = slider.value()  # 슬라이더 값 가져오기
            self.labels[i].setText(f'Slider {i+1}: {value}'# 각 슬라이더를 위한 라벨 업데이트
            combined_number += str(value)  # 결합된 숫자를 생성

        self.result_label.setText(f'Combined number: {combined_number}'# 결과 라벨 업데이트

if __name__ == '__main__'
    app = QApplication(sys.argv)
    demo = SliderDemo() 
    demo.show()
    sys.exit(app.exec_())  

 

반응형