62 lines
2.2 KiB
Python
62 lines
2.2 KiB
Python
import sys
|
|
import json
|
|
import locale
|
|
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QDoubleSpinBox
|
|
from PyQt5.QtGui import QFont
|
|
|
|
# 시스템의 로케일을 사용자의 기본 설정으로 초기화
|
|
locale.setlocale(locale.LC_ALL, '')
|
|
|
|
class DeliveryFeeCalculator(QWidget):
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.deliveryFees = [] # 배송비 정보를 저장할 리스트 초기화
|
|
self.initUI()
|
|
self.loadDeliveryFees()
|
|
self.setDefaultValues()
|
|
|
|
def initUI(self):
|
|
self.layout = QVBoxLayout()
|
|
|
|
self.weightInput = QDoubleSpinBox()
|
|
self.weightInput.setMaximum(500) # 최대 무게를 500kg로 설정
|
|
self.weightInput.setSingleStep(0.5) # 0.5kg 단위로 설정
|
|
self.weightInput.valueChanged.connect(self.updateDeliveryFee) # 값이 변경될 때 이벤트 연결
|
|
self.weightInput.setSuffix(" Kg") # Suffix로 " Kg" 추가
|
|
font = QFont()
|
|
font.setPointSize(12) # 폰트 크기를 12로 설정
|
|
font.setBold(True) # 폰트를 진하게 설정
|
|
self.weightInput.setFont(font) # QDoubleSpinBox의 폰트 설정
|
|
|
|
self.deliveryFeeLabel = QLabel('배송비: ')
|
|
self.deliveryFeeLabel.setFont(font) # QLabel의 폰트 설정
|
|
|
|
self.layout.addWidget(self.weightInput)
|
|
self.layout.addWidget(self.deliveryFeeLabel)
|
|
|
|
self.setLayout(self.layout)
|
|
self.setWindowTitle('배송비 계산기')
|
|
|
|
def loadDeliveryFees(self):
|
|
with open('delivery_fees.json', 'r') as file:
|
|
self.deliveryFees = json.load(file)
|
|
|
|
def setDefaultValues(self):
|
|
self.weightInput.setValue(1.0) # 기본값으로 1kg 설정
|
|
self.updateDeliveryFee() # 기본 배송비 표시
|
|
|
|
def updateDeliveryFee(self):
|
|
weight = self.weightInput.value()
|
|
fee = '정보 없음'
|
|
for item in self.deliveryFees:
|
|
if item['weight'] == weight:
|
|
fee = locale.format_string("%d", item['fee'], grouping=True) + "원"
|
|
break
|
|
self.deliveryFeeLabel.setText(f'배송비: {fee}')
|
|
|
|
if __name__ == '__main__':
|
|
app = QApplication(sys.argv)
|
|
ex = DeliveryFeeCalculator()
|
|
ex.show()
|
|
sys.exit(app.exec_())
|