본문 바로가기
Python Library/PySide

[PySide] 위젯 (QSlider, QDial) (5)

by goatlab 2022. 6. 13.
728x90
반응형
SMALL

QSlider

 

QSlider는 QDoubleSpinBox 같이 내부적으로 현재 값을 숫자로 표시하는 대신 위젯 길이를 따라 슬라이더 핸들의 위치로 표시된다. 이것은 두 극단 사이에서 조정을 제공할 때 종종 유용하지만 절대 정확도가 필요하지 않다. 이 유형의 위젯은 볼륨 컨트롤에 가장 일반적으로 사용된다.

 

슬라이더가 위치를 이동할 때마다 트리거 되는 추가 sliderMoved 신호와 슬라이더를 클릭할 때마다 방출되는  sliderPressed 신호가 있다.

 

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("My App")

        widget = QSlider()

        widget.setMinimum(-10)
        widget.setMaximum(3)
        # Or: widget.setRange(-10,3)

        widget.setSingleStep(3)

        widget.valueChanged.connect(self.value_changed)
        widget.sliderMoved.connect(self.slider_position)
        widget.sliderPressed.connect(self.slider_pressed)
        widget.sliderReleased.connect(self.slider_released)

        self.setCentralWidget(widget)

    def value_changed(self, i):
        print(i)

    def slider_position(self, p):
        print("position", p)

    def slider_pressed(self):
        print("Pressed!")

    def slider_released(self):
        print("Released")

 

이것을 실행하면 슬라이더 위젯이 표시된다. 슬라이더를 끌어 값을 변경한다.

 

 

슬라이더를 만들 때 방향을 전달하여 수직 또는 수평 방향으로 슬라이더를 구성할 수도 있다. 방향 플래그는 Qt 네임스페이스에 정의된다.

 

widget.QSlider(Qt.Vertical)

# or
widget.QSlider(Qt.Horizontal)

 

QDial

 

마지막으로, QDials는 슬라이더처럼 작동하지만 아날로그 다이얼로 나타나는 회전 가능한 위젯이다. 보기에는 좋아 보이지만 UI 관점에서 특별히 사용자 친화적이지 않다. 그러나 실제 아날로그 다이얼의 표현으로 오디오 응용 프로그램에서 자주 사용된다.

 

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("My App")

        widget = QDial()
        widget.setRange(-10, 100)
        widget.setSingleStep(0.5)

        widget.valueChanged.connect(self.value_changed)
        widget.sliderMoved.connect(self.slider_position)
        widget.sliderPressed.connect(self.slider_pressed)
        widget.sliderReleased.connect(self.slider_released)

        self.setCentralWidget(widget)

    def value_changed(self, i):
        print(i)

    def slider_position(self, p):
        print("position", p)

    def slider_pressed(self):
        print("Pressed!")

    def slider_released(self):
        print("Released")

 

이것을 실행하면 원형 다이얼이 표시되고 회전하여 범위에서 숫자를 선택한다.

 

 

신호는 QSlider와 동일하며 동일한 이름을 유지한다 (ex: sliderMoved).

728x90
반응형
LIST