일부 수정

This commit is contained in:
R5600U_PC 2024-04-25 11:10:11 +09:00
parent 2e1cec850b
commit d6dd20b170
5 changed files with 104 additions and 49 deletions

View File

@ -17,4 +17,4 @@ for folder in folders_to_delete:
# 디버깅용 : main.spec
# 배포용 : AutoPercenty.spec
call(['pyinstaller', 'delv.spec'])
call(['pyinstaller', 'delv_py.spec'])

Binary file not shown.

12
config.ini Normal file
View File

@ -0,0 +1,12 @@
[Settings]
maxweightset = 25
maxlengthset = 100
maxvolumeset = 160
addfeeinterval = 5
addfeesetting = 20
addfee = 5000
fontsize = 14
weightinterval = 0.5
setsavesetting = True
favoritedelv = 넥스트위해평택해운(배송비)

123
delv.py
View File

@ -1,4 +1,6 @@
import sys
import configparser
import os
import pandas as pd
import logging
from PyQt5.QtCore import Qt
@ -7,17 +9,25 @@ from PyQt5.QtGui import QFont
import re
from src.toggleSwitch import ToggleSwitch # toggleSwitch.py 파일에서 ToggleSwitch 클래스를 임포트
from src.logger_module import setup_logger
import logging
import ctypes
def minimize_console():
""" 콘솔 창을 최소화하는 함수 """
hwnd = ctypes.windll.kernel32.GetConsoleWindow()
if hwnd != 0:
ctypes.windll.user32.ShowWindow(hwnd, 6) # SW_MINIMIZE
class DeliveryFeeCalculator(QtWidgets.QWidget):
def __init__(self, logger):
super().__init__()
self.logger = logger
self.config = configparser.ConfigParser()
self.config_path = 'config.ini'
self.maxWeightSet = 25
self.maxLengthSet = 100
self.maxVolumeSet = 155
self.maxVolumeSet = 160
self.currentMaxLength = 1
self.roundVolume = 1
self.currentWeight = 1
@ -55,49 +65,78 @@ class DeliveryFeeCalculator(QtWidgets.QWidget):
self.setComboBox()
def initSettings(self):
self.settings = QtCore.QSettings('When_Ride_Mycar_Tanya', 'DeliveryFeeCalculator')
# self.settings = QtCore.QSettings('When_Ride_Mycar_Tanya', 'DeliveryFeeCalculator')
self.loadSettings()
def loadSettings(self):
self.maxWeightSet = self.settings.value('maxWeightSet', 25, type=int)
self.maxLengthSet = self.settings.value('maxLengthSet', 100, type=int)
self.maxVolumeSet = self.settings.value('maxVolumeSet', 155, type=int)
self.addFeeInterval = self.settings.value('addFeeInterval', 5, type=int)
self.addFeeSetting = self.settings.value('addFeeSetting', 20, type=int)
self.addFee = self.settings.value('addFee', 0, type=int)
self.fontSize = self.settings.value('fontSize', 14, type=int)
self.weightInterval = self.settings.value('weightInterval', 0.5, type=float)
self.setSaveSetting = self.settings.value('setSaveSetting', False, type=bool)
self.favoriteDelv = self.settings.value('favoriteDelv', "노빠꾸해운(배송비)", type=str)
""" 설정 파일을 불러옵니다. """
if not os.path.exists(self.config_path):
self.create_default_settings()
self.config.read(self.config_path)
self.maxWeightSet = self.config.getint('Settings', 'maxWeightSet', fallback=25)
self.maxLengthSet = self.config.getint('Settings', 'maxLengthSet', fallback=100)
self.maxVolumeSet = self.config.getint('Settings', 'maxVolumeSet', fallback=160)
self.addFeeInterval = self.config.getint('Settings', 'addFeeInterval', fallback=5)
self.addFeeSetting = self.config.getint('Settings', 'addFeeSetting', fallback=20)
self.addFee = self.config.getint('Settings', 'addFee', fallback=1000)
self.fontSize = self.config.getint('Settings', 'fontSize', fallback=14)
self.weightInterval = self.config.getfloat('Settings', 'weightInterval', fallback=0.5)
self.setSaveSetting = self.config.getboolean('Settings', 'setSaveSetting', fallback=False)
self.favoriteDelv = self.config.get('Settings', 'favoriteDelv', fallback="노빠꾸해운(배송비)")
def saveSettings(self):
self.settings.setValue('maxWeightSet', self.maxWeightSet)
self.settings.setValue('maxLengthSet', self.maxLengthSet)
self.settings.setValue('maxVolumeSet', self.maxVolumeSet)
self.settings.setValue('addFeeInterval', self.addFeeInterval)
self.settings.setValue('addFeeSetting', self.addFeeSetting)
self.settings.setValue('addFee', self.addFee)
self.settings.setValue('fontSize', self.fontSize)
self.settings.setValue('weightInterval', self.weightInterval)
self.settings.setValue('setSaveSetting', self.setSaveSetting)
self.settings.setValue('favoriteDelv', self.favoriteDelv)
""" 설정을 config.ini 파일에 저장합니다. """
if not self.config.has_section('Settings'):
self.config.add_section('Settings')
def loadWindowSettings(self):
# 윈도우 위치와 크기 설정을 불러옵니다
self.resize(self.settings.value("windowSize", QtCore.QSize(400, 300)))
self.move(self.settings.value("windowPosition", QtCore.QPoint(50, 50)))
self.config.set('Settings', 'maxWeightSet', str(self.maxWeightSet))
self.config.set('Settings', 'maxLengthSet', str(self.maxLengthSet))
self.config.set('Settings', 'maxVolumeSet', str(self.maxVolumeSet))
self.config.set('Settings', 'addFeeInterval', str(self.addFeeInterval))
self.config.set('Settings', 'addFeeSetting', str(self.addFeeSetting))
self.config.set('Settings', 'addFee', str(self.addFee))
self.config.set('Settings', 'fontSize', str(self.fontSize))
self.config.set('Settings', 'weightInterval', str(self.weightInterval))
self.config.set('Settings', 'setSaveSetting', str(self.setSaveSetting))
self.config.set('Settings', 'favoriteDelv', str(self.favoriteDelv))
def saveWindowSettings(self):
# 윈도우 위치와 크기 설정을 저장합니다
self.settings.setValue("windowSize", self.size())
self.settings.setValue("windowPosition", self.pos())
with open(self.config_path, 'w') as configfile:
self.config.write(configfile)
def create_default_settings(self):
""" 기본 설정을 생성합니다. """
self.config['Settings'] = {
'maxWeightSet': '25',
'maxLengthSet': '100',
'maxVolumeSet': '160',
'addFeeInterval': '5',
'addFeeSetting': '20',
'addFee': '1000',
'fontSize': '14',
'weightInterval': '0.5',
'setSaveSetting': 'False',
'favoriteDelv': "노빠꾸해운(배송비)"
}
with open(self.config_path, 'w') as configfile:
self.config.write(configfile)
# def loadWindowSettings(self):
# # 윈도우 위치와 크기 설정을 불러옵니다
# self.resize(self.settings.value("windowSize", QtCore.QSize(400, 300)))
# self.move(self.settings.value("windowPosition", QtCore.QPoint(50, 50)))
# def saveWindowSettings(self):
# # 윈도우 위치와 크기 설정을 저장합니다
# self.settings.setValue("windowSize", self.size())
# self.settings.setValue("windowPosition", self.pos())
def closeEvent(self, event):
# 종료 이벤트가 발생할 때 설정 저장
if self.setSaveSetting:
logger.debug("설정값 저장")
self.saveSettings()
self.saveWindowSettings()
# self.saveWindowSettings()
else:
logger.debug("설정값 저장하지 않음")
@ -373,9 +412,9 @@ class DeliveryFeeCalculator(QtWidgets.QWidget):
if sheet.endswith('(배송비)'):
self.comboBox.addItem(sheet)
logging.info('Excel file loaded successfully.')
logger.debug('Excel file loaded successfully.')
except Exception as e:
logging.error(f"Error loading Excel file: {e}")
logger.error(f"Error loading Excel file: {e}")
QtWidgets.QMessageBox.critical(self, "Error", "Failed to load the Excel file.")
def processSheet(self, df, sheet_name, key):
@ -388,7 +427,7 @@ class DeliveryFeeCalculator(QtWidgets.QWidget):
fee = int(fee_str)
records.append({key: value, '배송비': fee})
except ValueError as e:
logging.error(f"Error converting values in row {index} of sheet {sheet_name}: {e}")
logger.error(f"Error converting values in row {index} of sheet {sheet_name}: {e}")
continue
self.deliveryFees[sheet_name] = records
@ -403,9 +442,9 @@ class DeliveryFeeCalculator(QtWidgets.QWidget):
def updateDeliveryFee(self):
try:
weight = self.weightInput.value()
logger.debug(f"현재 선택된 무게 : {weight}")
# logger.debug(f"현재 선택된 무게 : {weight}")
selected_sheet = self.comboBox.currentText()
logger.debug(f"현재 선택된 시트 : {selected_sheet}")
# logger.debug(f"현재 선택된 시트 : {selected_sheet}")
fees = self.deliveryFees.get(selected_sheet, [])
fee = 0
# 가능한 모든 무게를 리스트로 가져오고 정렬
@ -435,7 +474,7 @@ class DeliveryFeeCalculator(QtWidgets.QWidget):
else:
self.deliveryFeeLabel.setText(f'배송비: {int(fee): ,}')
logger.debug(f"배송비 deliveryFeeLabel에 업데이트: {int(fee): ,}")
# logger.debug(f"배송비 deliveryFeeLabel에 업데이트: {int(fee): ,}원")
# 폰트와 밑줄 설정
font = QFont()
@ -447,7 +486,7 @@ class DeliveryFeeCalculator(QtWidgets.QWidget):
self.additionalFee()
except Exception as e:
logger.debug(f"Error updating delivery fee: {e}")
logger.error(f"Error updating delivery fee: {e}")
self.deliveryFeeLabel.setText("배송비 업데이트 중 오류 발생")
def updateAdditionalDeliveryFee(self):
@ -513,7 +552,7 @@ class DeliveryFeeCalculator(QtWidgets.QWidget):
self.additionalFeeLabel.setText(f'경동 택배비[{price_source}]: {fee}')
except Exception as e:
logger.debug(f"Error updating Additional delivery fee: {e}")
logger.error(f"Error updating Additional delivery fee: {e}")
self.additionalFeeLabel.setText("배송비 업데이트 중 오류 발생")
@ -661,8 +700,10 @@ class DeliveryFeeCalculator(QtWidgets.QWidget):
self.setComboBox()
if __name__ == '__main__':
minimize_console()
app = QtWidgets.QApplication(sys.argv)
logger = setup_logger('default_logger', 'delivery_calc.log', level=logging.DEBUG)
logger = setup_logger('default_logger', 'delivery_calc.log', level=logging.INFO)
ex = DeliveryFeeCalculator(logger)
ex.show()
sys.exit(app.exec_())

View File

@ -3,10 +3,12 @@
a = Analysis(
['delv.py'],
pathex=[],
pathex=['H:\\py\\delvfee'],
binaries=[],
datas=[],
hiddenimports=[],
hiddenimports=[
'sip', 'jinja2'
],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
@ -21,12 +23,12 @@ exe = EXE(
a.scripts,
[],
exclude_binaries=True,
name='delv',
name='Deliver_Calc',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=False,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
@ -41,5 +43,5 @@ coll = COLLECT(
strip=False,
upx=True,
upx_exclude=[],
name='delv',
name='Deliver_Calc',
)