Appia의 IT세상

파이썬[Python GUI, PyQt5 Tutorial 024] 슬라이드바 (QSlider)만들기 본문

Python/Python PyQt5 (GUI)

파이썬[Python GUI, PyQt5 Tutorial 024] 슬라이드바 (QSlider)만들기

Appia 2020. 7. 30. 07:01
반응형

파이썬[Python GUI, PyQt5 Tutorial 024] 슬라이드바 (QSlider)만들기

 

슬라이드바를 생성해보고자 합니다. 흔히들 가장 많이 보는 형태는 다음과 같은 그림의 형태입니다. 

슬라이드바 (QSlider) 예시

이와 같은 형태와 비슷하게 PyQt5를 이용해서 한번 만들어보고자 합니다. 그럼 다음과 같은 코드를 먼저 살펴보겠습니다. 

 

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QSlider, QLabel, QPushButton
from PyQt5.QtCore import Qt
 
 
class MyApp(QWidget):
 
    def __init__(self):
        super().__init__()
        self.slider = QSlider(Qt.Horizontal, self)
        self.slider.move(3030)
        self.slider.setRange(0100)
        self.slider.setSingleStep(1)
        self.label = QLabel('0',self)
        self.label.move(30,100)
        btn = QPushButton('Default', self)
        btn.move(35160)
        self.slider.valueChanged[int].connect(self.chagne_Value)
        btn.clicked.connect(self.button_clicked)
        self.setWindowTitle('QSlider')
        self.setGeometry(300300400200)
        self.show()
 
    def button_clicked(self):
        self.slider.setValue(0)
 
    def chagne_Value(self,value):
        print(value)
        self.label.setText(str(value))
        self.label.adjustSize()
        self.label.repaint()
 
 
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())
cs

 

먼저 위의 코드를 실행하면 다음과 같은 화면이 나타납니다. 

예제 코드 실행결과 

슬라이드바 (QSlider)를 조절하면 현재 값을 라벨에 출력해주는 형태로 코드를 작성했습니다. 그럼 세부적인 부분들에 대해서 더 살펴보겠습니다. 

 

다음 코드 부분을 통해서 슬라이드바 (QSlider)의 기본적인 부분에 대해서 설정할 수 있습니다. 

        self.slider = QSlider(Qt.Horizontal, self)
        self.slider.move(3030)
        self.slider.setRange(0100)
        self.slider.setSingleStep(1)
cs

먼저, 가로 세로인지에 대해서 생성시에 설정을 해주게 되어 있습니다. 생성시에 다음과 같이 가로 세로를 설정하여 생성할 수 있습니다. 

Qt.Horizontal 가로 형태의 슬라이드바 (QSlider)
Qt.Vertical 세로형태의 슬라이드바 (QSlider)

 

그리고 setRange을 통해서 최소값과 최대값을 설정할 수 있습니다. setSingleStep의 경우 한 Step을 적용될 수를 이야기 합니다. 가장 쉽게 생각하시면, 다음과 같은 부분이라고 생각하시면 됩니다. 가로 형태의 슬라이드바를 사용시에 키보드 좌우를 통해서 슬라이디바의 값을 설정할 수 있습니다. 이 때, 최소 움직여 주는 값을 이야기합니다. 

 

        btn = QPushButton('Default', self)
        btn.move(35160)
 
        self.slider.valueChanged[int].connect(self.chagne_Value)
 
        btn.clicked.connect(self.button_clicked)
 
        self.setWindowTitle('QSlider')
        self.setGeometry(300300400200)
        self.show()
 
    def button_clicked(self):
        self.slider.setValue(0)
 
    def chagne_Value(self,value):
        print(value)
        self.label.setText(str(value))
        self.label.adjustSize()
        self.label.repaint()
cs

먼저, 위의 생성한 버튼을 클릭시에 값을 slider.setValue를 통해 값을 0으로 초기화 하는 버튼을 만들었습니다. 그리고 값을 변활때마다, 변화된 값이 라벨에 출려되게 하였습니다. 이 부분은 change_value함수와 valueChanged와의 이벤트 연결을 통해서 작성하였습니다. 그럼 이벤트 관련된 어떤 부분들이 존재하는 지 살펴보겠습니다. 

valueChanged 슬라이더의 값이 변경시
sliderPressed 슬라이더을 클릭하여 누르기 시작할때
sliderMoved 슬라이더의 움직임 발생시
sliderReleased 슬라이더을 클릭한 부분이 해제 될때

위와 같은 이벤트들을 연결하여 사용이 가능합니다. 

 

이번 포스팅에서는 파이썬[Python GUI, PyQt5 Tutorial 024] 슬라이드바 (QSlider)만들기라는 주제로 포스팅을 해봤습니다. 나중에 음량 조절하는 부분을 이부분을 통해서 만들어볼까 합니다. 궁금하신점이나 문의 사항 있으시면 방명록 및 댓글에 글 남겨주시길 바랍니다. 감사합니다. 

 

반응형
Comments