from PyQt5.QtWidgets import QWidget, QApplication, QSpinBox, QDoubleSpinBox, QVBoxLayout, QLabel
from PyQt5.QtCore import Qt
import sys
class 스핀박스(QWidget):
def __init__(self):
super().__init__()
self.UI초기화()
def UI초기화(self):
###--------------QSpinBox-----------------###
self.label1 = QLabel('QSpinBox')
self.spinbox = QSpinBox()
self.spinbox.setMinimum(0)
self.spinbox.setMaximum(100000000)
self.spinbox.setSingleStep(1000)
self.label2 = QLabel('0')
self.spinbox.valueChanged.connect(self.valueChange)
# ==============QDoubleSpinBox===========###
self.label3 = QLabel('QDoubleSpinBox')
self.dSpinbox = QDoubleSpinBox()
self.dSpinbox.setSingleStep(0.5)
self.dSpinbox.setSuffix("달러")
self.dSpinbox.setDecimals(1)
self.label4 = QLabel('0')
self.dSpinbox.valueChanged.connect(self.valueChange2)
vbox = QVBoxLayout(self)
vbox.addWidget(self.label1)
vbox.addWidget(self.spinbox)
vbox.addWidget(self.label2)
vbox.addWidget(self.label3)
vbox.addWidget(self.dSpinbox)
vbox.addWidget(self.label4)
self.setLayout(vbox)
self.setWindowTitle('QSpinBox, QDoubleSpinBox')
self.setGeometry(300, 300, 400, 300)
self.show()
def valueChange(self):
self.label2.setText(f'{self.spinbox.value()}원 ->' +
f'{round(self.spinbox.value()/1191, 2)}달러')
def valueChange2(self):
self.label4.setText(f'{self.dSpinbox.value()}달러 -> '+
f'{round(self.dSpinbox.value()*1191, 2)}원')
프로그램무한반복 = QApplication(sys.argv)
실행인스턴스 = 스핀박스()
프로그램무한반복.exec_()
SpinBox는 숫자를 올리거나 내릴 때 사용할 수 있는 input 창입니다. 정수는 QSpinBox
를 통하여, 실수는 QDoubleSpinBox
를 통해 구현할 수 있습니다.
###--------------QSpinBox-----------------###
self.label1 = QLabel('QSpinBox')
self.spinbox = QSpinBox()
self.spinbox.setMinimum(0)
self.spinbox.setMaximum(100000000)
self.spinbox.setSingleStep(1000)
self.label2 = QLabel('0')
self.spinbox.valueChanged.connect(self.valueChange)
QSpinBox는 정수만 표시 가능한 박스
setMinimum(값): 스핀박스의 최소값 지정
setMaximum(값): 스핀박스의 최대값 지정
self.spinbox.setRange(최저값,최대값) 으로도 설정가능 Default = 0 ~ 99
setSingleStep(값) : 스핀박스가 움직일 때 얼마 만큼 건너 뛸 수 있는지
스핀 위젯이 변경될 때 발생하는 시그널을 valueChange 함수에 연결
공식문서
def valueChange(self):
self.label2.setText(str(self.spinbox.value())+" 원 -> " +
str(round(self.spinbox.value()/1191, 2)) + " 달러")
# ==============QDoubleSpinBox===========###
self.label3 = QLabel('QDoubleSpinBox')
self.dSpinbox = QDoubleSpinBox()
self.dSpinbox.setSingleStep(0.5)
self.dSpinbox.setSuffix("달러")
self.dSpinbox.setDecimals(1)
self.label4 = QLabel('0')
self.dSpinbox.valueChanged.connect(self.valueChange2)