본문 바로가기
프로그래밍/python

PyQt5 QSpinBox 사용 방법 가이드

by 마루의 일상 2024. 6. 2.
728x90
반응형

 

PyQt5는 Python을 사용하여 데스크톱 애플리케이션을 만들 수 있는 강력한 GUI 라이브러리입니다. QSpinBox는 PyQt5에서 제공하는 위젯 중 하나로, 숫자 입력을 위한 스핀 박스를 생성하는 데 사용됩니다. 이 블로그 포스트에서는 QSpinBox의 기본 사용법과 주요 기능들을 자세히 설명하겠습니다.

QSpinBox란?

QSpinBox는 사용자가 숫자 값을 쉽게 입력할 수 있도록 해주는 위젯입니다. 위아래로 증가 및 감소 버튼을 제공하며, 직접 값을 입력할 수도 있습니다. 주로 폼이나 설정 창에서 숫자 입력이 필요할 때 사용됩니다.

기본 사용법

QSpinBox를 사용하여 간단한 예제를 만들어보겠습니다. 이 예제에서는 QSpinBox를 포함한 간단한 윈도우를 생성합니다.

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QSpinBox, QLabel

class MyApp(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.label = QLabel('0', self)
        self.spinbox = QSpinBox(self)
        self.spinbox.setRange(0, 100)
        self.spinbox.setSingleStep(1)
        self.spinbox.valueChanged.connect(self.updateLabel)

        vbox = QVBoxLayout()
        vbox.addWidget(self.spinbox)
        vbox.addWidget(self.label)

        self.setLayout(vbox)

        self.setWindowTitle('QSpinBox Example')
        self.setGeometry(300, 300, 300, 200)
        self.show()

    def updateLabel(self, value):
        self.label.setText(str(value))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

이 코드는 QSpinBox와 QLabel을 포함한 간단한 애플리케이션을 생성합니다. 사용자가 스핀 박스의 값을 변경하면 QLabel에 해당 값이 표시됩니다.

주요 기능

QSpinBox는 다양한 설정을 통해 사용자의 필요에 맞게 커스터마이즈할 수 있습니다. 몇 가지 주요 기능을 살펴보겠습니다.

범위 설정

QSpinBox의 최소값과 최대값을 설정할 수 있습니다. 기본 범위는 0에서 99까지입니다.

self.spinbox.setRange(0, 1000)  # 0에서 1000까지의 값 허용

단위 설정

스핀 박스의 값에 단위를 추가할 수 있습니다. 예를 들어, 화폐 단위를 표시하고 싶을 때 사용합니다.

self.spinbox.setSuffix(' $')  # 값 뒤에 '$' 추가

단위 증가/감소 설정

스핀 박스의 값이 증가하거나 감소할 때의 단위 간격을 설정할 수 있습니다. 기본값은 1입니다.

self.spinbox.setSingleStep(5)  # 5씩 증가 또는 감소

초기값 설정

스핀 박스의 초기값을 설정할 수 있습니다.

self.spinbox.setValue(10)  # 초기값을 10으로 설정

소수점 설정

QSpinBox는 정수 값을 다루지만, QDoubleSpinBox를 사용하여 소수점을 포함한 값을 처리할 수 있습니다.

from PyQt5.QtWidgets import QDoubleSpinBox

self.doublespinbox = QDoubleSpinBox(self)
self.doublespinbox.setDecimals(2)  # 소수점 두 자리까지 표시
self.doublespinbox.setRange(0.00, 100.00)
self.doublespinbox.setSingleStep(0.1)

이벤트 핸들링

QSpinBox의 값이 변경될 때마다 특정 작업을 수행하도록 이벤트를 연결할 수 있습니다. 예제 코드에서 사용한 valueChanged 시그널은 스핀 박스의 값이 변경될 때 호출됩니다.

from PyQt5.QtWidgets import QDoubleSpinBox

self.doublespinbox = QDoubleSpinBox(self)
self.doublespinbox.setDecimals(2)  # 소수점 두 자리까지 표시
self.doublespinbox.setRange(0.00, 100.00)
self.doublespinbox.setSingleStep(0.1)

결론

QSpinBox는 PyQt5에서 숫자 입력을 간단하고 직관적으로 처리할 수 있는 위젯입니다. 다양한 설정과 이벤트 핸들링을 통해 사용자 인터페이스를 더욱 풍부하게 만들 수 있습니다.

728x90
반응형