DeliveryFeeCalc/delv.py

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_())