일부 수정
This commit is contained in:
parent
2e1cec850b
commit
d6dd20b170
2
build.py
2
build.py
|
|
@ -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.
|
|
@ -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
123
delv.py
|
|
@ -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_())
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
)
|
||||
Loading…
Reference in New Issue