일부 수정

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 = 넥스트위해평택해운(배송비)

127
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')
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))
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 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 saveWindowSettings(self):
# 윈도우 위치와 크기 설정을 저장합니다
self.settings.setValue("windowSize", self.size())
self.settings.setValue("windowPosition", self.pos())
# 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("배송비 업데이트 중 오류 발생")
@ -529,8 +568,8 @@ class DeliveryFeeCalculator(QtWidgets.QWidget):
if self.favoriteDelv:
index = self.comboBox.findText(self.favoriteDelv)
logger.debug(f"저장된 배대지가 존재함: {self.favoriteDelv}")
if index >= 0:
self.comboBox.setCurrentIndex(index)
if index >= 0:
self.comboBox.setCurrentIndex(index)
else:
logger.debug("저장된 배대지가 엑셀시트에 존재하지 않습니다.")
@ -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',
)