재설정

This commit is contained in:
EnvyPC 2024-04-10 17:31:51 +09:00
parent 860724cb71
commit ee35291b4a
7 changed files with 662 additions and 38 deletions

36
adf.ini Normal file
View File

@ -0,0 +1,36 @@
[4사업자]
businessname = 987
businessnumber = 987
businessphone = ui
businessaddress = oiu
businessdate = h
businessetc1 = nbm
businessetc2 =
businessetc3 =
businessetc4 =
coupang_id =
coupang_code =
coupang_access_key =
coupang_secret_key =
coupang_ordercollection = True
coupang_api_verification = False
smartstore_api_verification = True
smartstore_ordercollection = True
smartstore_app_id =
smartstore_app_pw = 123
smartstore_ss_id =
smartstore_ss_pw =
esm_auction_id =
esm_gmarket_id =
esm_api_verification = False
esm_ordercollection = False
street11_domestic_api_key =
street11_domestic_ordercollection = False
street11_domestic_api_verification = False
street11_global_api_key =
street11_global_ordercollection = False
street11_global_api_verification = False
lotteon_api_key =
lotteon_ordercollection = False
lotteon_api_verification = False

View File

@ -1,23 +1,108 @@
[사업자1]
name = 김땡땡
number = 423
phone = 010-5555-6666
address = 부산시 연제구 땡떙땡
card = 국민카드 ㅇㅇㅇㅇ
[1사업자]
businessname = 사업자이름
businessnumber = 사업자번호
businessphone = 사업자전화번호
businessaddress = 사업자주소
businessdate = 사업자개업날짜
businessetc1 = 사업자기타정보1
businessetc2 = 사업자기타정보2
businessetc3 = 사업자기타정보3
businessetc4 = 사업자기타정보4
coupang_id = 쿠팡아이디
coupang_code = 업체코드값
coupang_access_key = AccessKey값
coupang_secret_key = SecretKey값
coupang_ordercollection = True
coupang_api_verification = true
smartstore_api_verification = true
smartstore_ordercollection = true
smartstore_app_id = APPID값
smartstore_app_pw = APPPW값
smartstore_ss_id = 스마트스토어ID값
smartstore_ss_pw = 스마트스토어비밀번호값
esm_auction_id = 옥션ID값
esm_gmarket_id = G마켓ID값
esm_api_verification = true
esm_ordercollection = true
street11_domestic_api_key = 국내11번가API키값
street11_domestic_ordercollection = true
street11_domestic_api_verification = true
street11_global_api_key = 글로벌11번가API키값
street11_global_ordercollection = true
street11_global_api_verification = true
lotteon_api_key = 롯데온API키값
lotteon_ordercollection = true
lotteon_api_verification = true
[사업자1_coupang]
api_key = 5654-9821ㄹ--165ㅇㄹ-98546ㄹ16
[2사업자]
businessname = 2사업자이름
businessnumber = 2사업자번호
businessphone = 2사업자전화번호
businessaddress = 사2업자주소
businessdate = 2사업자개업날짜
businessetc1 = 2사업자기타정보1
businessetc2 = 2사업자기타정보2
businessetc3 = 2사업자기타정보3
businessetc4 = 2사업자기타정보4
coupang_id = 2쿠팡아이디
coupang_code = 2업체코드값
coupang_access_key = 2AccessKey값
coupang_secret_key = SecretKey값
coupang_ordercollection = false
coupang_api_verification = true
smartstore_api_verification = true
smartstore_ordercollection = true
smartstore_app_id = 22APPID값
smartstore_app_pw = 22APPPW값
smartstore_ss_id = 스마트스토어ID값
smartstore_ss_pw = 스마트스토어비밀번호값
esm_auction_id = 옥션ID값
esm_gmarket_id = G마켓ID값
esm_api_verification = true
esm_ordercollection = false
street11_domestic_api_key = 국내11번가API키값
street11_domestic_ordercollection = true
street11_domestic_api_verification = true
street11_global_api_key = 글로벌11번가API키값
street11_global_ordercollection = true
street11_global_api_verification = true
lotteon_api_key = 롯데온API키값
lotteon_ordercollection = true
lotteon_api_verification = false
[사업자1_gmarket]
api_key = 지마켓 API 키
[사업자 1]
name = 김ㅌ떄이ㅏㅓ
number = ㅈ32423`
phone = 5523
address =
card =
[사업자 1_coupang]
api_key = ㄷ421-6564-854321
[3사업자]
businessname = 3사업자이름
businessnumber = 3사업자번호
businessphone = 3사업자전화번호
businessaddress = 3사3업자주소
businessdate = 3사업자개업날짜
businessetc1 = 3사업자기타정보1
businessetc2 = 2사업자기타정보2
businessetc3 = 2사업자기타정보3
businessetc4 = 2사업자기타정보4
coupang_id = 3쿠팡아이디
coupang_code = 2업체코드값
coupang_access_key = 2AccessKey값
coupang_secret_key = SecretKey값
coupang_ordercollection = false
coupang_api_verification = true
smartstore_api_verification = true
smartstore_ordercollection = true
smartstore_app_id = 22APPID값
smartstore_app_pw = 22APPPW값
smartstore_ss_id = 스마트스토어ID값
smartstore_ss_pw = 스마트스토어비밀번호값
esm_auction_id = 옥션ID값
esm_gmarket_id = G마켓ID값
esm_api_verification = true
esm_ordercollection = false
street11_domestic_api_key = 국내11번가API키값
street11_domestic_ordercollection = true
street11_domestic_api_verification = true
street11_global_api_key = 글로벌11번가API키값
street11_global_ordercollection = true
street11_global_api_verification = true
lotteon_api_key = 롯데온API키값
lotteon_ordercollection = true
lotteon_api_verification = false

69
main.py
View File

@ -1,8 +1,8 @@
from PyQt5.QtWidgets import QApplication, QMainWindow, QTabWidget, QMenuBar, QAction, QFileDialog, QMessageBox
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMainWindow, QTabWidget, QMenuBar, QAction, QFileDialog, QVBoxLayout, QMessageBox
import sys
from src.log_config import setup_logging
from src.market_config_widget import MarketConfigWidget
from src.market_config import MarketConfigWidget
from src.config_handler import *
class MainWindow(QMainWindow):
@ -10,12 +10,51 @@ class MainWindow(QMainWindow):
super().__init__()
setup_logging()
self.setWindowTitle("Market API Configurator")
self.setGeometry(100, 100, 600, 900)
self.setGeometry(100, 100, 800, 900)
self.initUI()
def initUI(self):
self.tabWidget = QTabWidget(self)
self.setCentralWidget(self.tabWidget)
mainWidget = QWidget()
self.setCentralWidget(mainWidget)
# 메인 레이아웃 설정
mainLayout = QVBoxLayout(mainWidget)
# 탭 위젯 설정
self.businesstabWidget = QTabWidget()
mainLayout.addWidget(self.businesstabWidget)
# 동적으로 사업자 탭 생성
#self.tabs = {}
#for i in range(1, 6): # 예시로 5개의 사업자 탭을 생성
# tabName = f"사업자{i}"
# self.tabs[tabName] = MarketConfigWidget(tabName, self)
# self.businesstabWidget.addTab(self.tabs[tabName], tabName)
# 동적으로 사업자 탭 생성
for i in range(1, 6):
tabName = f"{i}사업자"
tabWidget = MarketConfigWidget(tabName)
self.businesstabWidget.addTab(tabWidget, tabName)
# 탭 바(QTabBar) 스타일 시트 설정
self.businesstabWidget.setStyleSheet("""
QTabBar::tab {
background: lightgray;
font-size: 11pt;
height: 30px;
width: 100px;
}
QTabBar::tab:selected {
background: cyan;
}
""")
# 버튼 추가
self.loadBusinessButton = QPushButton("현재 사업자 불러오기")
self.applyBusinessButton = QPushButton("선택된 사업자 적용하기")
mainLayout.addWidget(self.loadBusinessButton)
mainLayout.addWidget(self.applyBusinessButton)
# 메뉴바 및 설정 불러오기 액션 추가
menuBar = QMenuBar(self)
@ -25,10 +64,6 @@ class MainWindow(QMainWindow):
loadAction.triggered.connect(self.loadConfig)
fileMenu.addAction(loadAction)
# 사업자 탭 생성
for i in range(1, 6):
tab = MarketConfigWidget(f"사업자{i}", self)
self.tabWidget.addTab(tab, f"사업자{i}")
def loadConfig(self):
options = QFileDialog.Options()
@ -37,17 +72,19 @@ class MainWindow(QMainWindow):
if fileName:
try:
config = load_config(fileName)
for i in range(self.tabWidget.count()):
tab = self.tabWidget.widget(i)
business_number = f"사업자{i+1}"
for i in range(self.businesstabWidget.count()):
tab = self.businesstabWidget.widget(i)
business_number = f"{i+1}사업자"
if business_number in config:
tab.loadBusinessInfo(config[business_number])
tab.loadMarketInfo(config) # MarketConfigWidget에 해당 메소드 구현 필요
else:
QMessageBox.warning(self, "경고", f"{business_number} 정보가 파일에 없습니다.")
print(f"business_number : {business_number}")
tab.loadBusinessInfo(config, business_number)
#else:
# QMessageBox.warning(self, "경고", f"{business_number} 정보가 파일에 없습니다.")
except Exception as e:
QMessageBox.critical(self, "오류", f"설정 파일을 불러오는 중 오류가 발생했습니다: {e}")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()

View File

@ -10,6 +10,13 @@ def save_config(config, file_path="config.ini"):
config.write(configfile)
def get_business_info(config, business_number):
# 모든 섹션에 대해 반복
for section in config.sections():
print(f'Section: {section}')
# 각 섹션의 모든 키(key)와 값(value)에 대해 반복
for key in config[section]:
print(f' {key} = {config[section][key]}')
print() # 섹션 사이에 빈 줄 추가
return dict(config[business_number])
def get_market_info(config, business_number, market):

359
src/market_config.py Normal file
View File

@ -0,0 +1,359 @@
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QLineEdit, QPushButton, QFileDialog, QMessageBox, QGroupBox, QHBoxLayout, QSplitter, QTabWidget
from src.toggleSwitch import ToggleSwitch
from src.config_handler import *
import configparser
from PyQt5.QtCore import Qt
class MarketConfigWidget(QWidget):
def __init__(self, business_number, parent=None):
super().__init__(parent)
self.business_number = business_number
self.market_Keys = {}
self.businessName=None
self.businessNumber=None
self.businessPhone=None
self.businessAddress=None
self.businessDate=None
self.businessEtc1=None
self.businessEtc2=None
self.businessEtc3=None
self.businessEtc4=None
self.CouPang_ID=None
self.CouPang_CODE=None
self.CouPang_Access_Key=None
self.CouPang_Secret_Key=None
self.CouPang_OrderCollection=None
self.CouPang_API_Verification=None
self.SmartStore_API_Verification=None
self.SmartStore_OrderCollection=None
self.SmartStore_APP_ID=None
self.SmartStore_APP_PW=None
self.SmartStore_SS_ID=None
self.SmartStore_SS_PW=None
self.ESM_AUCTION_ID=None
self.ESM_GMARKET_ID=None
self.ESM_API_Verification=None
self.ESM_OrderCollection=None
self.Street11_Domestic_API_KEY=None
self.Street11_Domestic_OrderCollection=None
self.Street11_Domestic_API_Verification=None
self.Street11_Global_API_KEY=None
self.Street11_Global_OrderCollection=None
self.Street11_Global_API_Verification=None
self.LotteOn_API_KEY=None
self.LotteOn_OrderCollection=None
self.LotteOn_API_Verification=None
self.initUI()
def initUI(self):
self.infoLayout = QVBoxLayout(self)
self.splitter = QSplitter(Qt.Vertical)
# 사업자 정보 섹션
self.businessInfoGroup = QGroupBox("사업자 정보")
self.businessLayout = QVBoxLayout(self.businessInfoGroup)
self.businessNameInput = QLineEdit()
self.businessNumberInput = QLineEdit()
self.businessPhoneInput = QLineEdit()
self.businessAddressInput = QLineEdit()
self.businessDateInput = QLineEdit()
self.businessEtc1Input = QLineEdit()
self.businessEtc2Input = QLineEdit()
self.businessEtc3Input = QLineEdit()
self.businessEtc4Input = QLineEdit()
self.addInputField(self.businessLayout, "사업자 이름", self.businessNameInput)
self.addInputField(self.businessLayout, "사업자 번호", self.businessNumberInput)
self.addInputField(self.businessLayout, "전화번호", self.businessPhoneInput)
self.addInputField(self.businessLayout, "주소", self.businessAddressInput)
self.addInputField(self.businessLayout, "개업날짜", self.businessDateInput)
self.addInputField(self.businessLayout, "기타정보1", self.businessEtc1Input)
self.addInputField(self.businessLayout, "기타정보2", self.businessEtc2Input)
self.addInputField(self.businessLayout, "기타정보3", self.businessEtc3Input)
self.addInputField(self.businessLayout, "기타정보4", self.businessEtc4Input)
# 마켓 정보 섹션
self.marketInfoGroup = QGroupBox("마켓 정보")
self.marketLayout = QVBoxLayout(self.marketInfoGroup)
# 마켓 정보 탭
self.marketTabWidget = QTabWidget()
couPangTab = self.addMarketTabs("쿠팡")
smartStoreTab = self.addMarketTabs("스스")
ESMTab = self.addMarketTabs("ESM")
street11DomesticTab = self.addMarketTabs("Street11국내")
street11Global = self.addMarketTabs("Street11글로벌")
lotterOnTab = self.addMarketTabs("롯데온")
# 탭 바(QTabBar) 스타일 시트 설정
self.marketTabWidget.setStyleSheet("""
QTabBar::tab {
background: lightgray;
font-size: 11pt;
height: 30px;
width: 120px;
}
QTabBar::tab:selected {
background: cyan;
}
""")
self.marketLayout.addWidget(self.marketTabWidget)
self.splitter.addWidget(self.businessInfoGroup)
self.splitter.addWidget(self.marketInfoGroup)
# 상하 분할 비율 설정 (3:7 비율)
self.splitter.setSizes([300, 700])
self.infoLayout.addWidget(self.splitter)
# 설정 불러오기 및 저장 버튼
self.saveBtn = QPushButton(f'현재설정으로 [{self.business_number}]에 저장하기', self)
self.saveBtn.clicked.connect(self.saveBusinessInfo)
#self.applyBtn = QPushButton(f'현재 [{self.business_number}] 적용하기', self)
self.btnLayout = QHBoxLayout()
self.btnLayout.addWidget(self.saveBtn)
#self.btnLayout.addWidget(self.applyBtn)
self.infoLayout.addLayout(self.btnLayout)
def addInputField(self, layout, label, widget):
row = QHBoxLayout()
row.addWidget(QLabel(label))
row.addWidget(widget)
layout.addLayout(row)
def load_config_item(self, config, input, itemName):
if input is not None:
if isinstance(input, ToggleSwitch):
input.setChecked(config[self.business_number]).get(itemName)
if isinstance(input, QLineEdit):
input.setText(config[self.business_number]).get(itemName)
# load_config_item(config, mmarket_Keys["쿠팡ID"], 'CouPang_ID')
def loadBusinessInfo(self, config, business_number):
try:
if business_number in config:
print(f"섹션 : {business_number} 찾음")
self.businessNameInput.setText(config[business_number].get('businessName', ''))
self.businessNumberInput.setText(config[business_number].get('businessNumber', ''))
self.businessPhoneInput.setText(config[business_number].get('businessPhone', ''))
self.businessAddressInput.setText(config[business_number].get('businessAddress', ''))
self.businessDateInput.setText(config[business_number].get('businessDate', ''))
self.businessEtc1Input.setText(config[business_number].get('businessEtc1', ''))
self.businessEtc2Input.setText(config[business_number].get('businessEtc2', ''))
self.businessEtc3Input.setText(config[business_number].get('businessEtc3', ''))
self.businessEtc4Input.setText(config[business_number].get('businessEtc4', ''))
self.market_Keys["쿠팡ID"].setText(config[business_number].get('CouPang_ID', ''))
self.market_Keys["업체코드"].setText(config[business_number].get('CouPang_CODE', ''))
self.market_Keys["Access_Key"].setText(config[business_number].get('CouPang_Access_Key', ''))
self.market_Keys["Secret_Key"].setText(config[business_number].get('CouPang_Secret_Key', ''))
self.market_Keys["쿠팡 주문수집 여부"].setChecked(config[business_number].get('CouPang_OrderCollection', ''))
self.market_Keys["쿠팡 API검증 여부"].setChecked(config[business_number].get('CouPang_API_Verification', ''))
self.market_Keys["스스 API검증 여부"].setChecked(config[business_number].get('SmartStore_API_Verification', ''))
self.market_Keys["스스 주문수집 여부"].setChecked(config[business_number].get('SmartStore_OrderCollection', ''))
self.market_Keys["APP_ID"].setText(config[business_number].get('SmartStore_APP_ID', ''))
self.market_Keys["APP_PW"].setText(config[business_number].get('SmartStore_APP_PW', ''))
self.market_Keys["스마트스토어 ID"].setText(config[business_number].get('SmartStore_SS_ID', ''))
self.market_Keys["스마트스토어 비밀번호"].setText(config[business_number].get('SmartStore_SS_PW', ''))
self.market_Keys["옥션 ID"].setText(config[business_number].get('ESM_AUCTION_ID', ''))
self.market_Keys["G마켓 ID"].setText(config[business_number].get('ESM_GMARKET_ID', ''))
self.market_Keys["ESM API검증 여부"].setChecked(config[business_number].get('ESM_API_Verification', ''))
self.market_Keys["ESM 주문수집 여부"].setChecked(config[business_number].get('ESM_OrderCollection', ''))
self.market_Keys["API_KEY"].setText(config[business_number].get('Street11_Domestic_API_KEY', ''))
self.market_Keys["Street11국내 주문수집 여부"].setChecked(config[business_number].get('Street11_Domestic_OrderCollection', ''))
self.market_Keys["Street11국내 API검증 여부"].setChecked(config[business_number].get('Street11_Domestic_API_Verification', ''))
self.market_Keys["API_KEY"].setText(config[business_number].get('Street11_Global_API_KEY', ''))
self.market_Keys["Street11글로벌 API검증 여부"].setChecked(config[business_number].get('Street11_Global_OrderCollection', ''))
self.market_Keys["Street11글로벌 주문수집 여부"].setChecked(config[business_number].get('Street11_Global_API_Verification', ''))
self.market_Keys["API_KEY"].setText(config[business_number].get('LotteOn_API_KEY', ''))
self.market_Keys["롯데온 API검증 여부"].setChecked(config[business_number].get('LotteOn_OrderCollection', ''))
self.market_Keys["롯데온 주문수집 여부"].setChecked(config[business_number].get('LotteOn_API_Verification', ''))
#QMessageBox.information(self, "성공", "설정이 성공적으로 불러와졌습니다.")
print("성공")
else:
print(f"섹션 : {business_number} 못찾음")
#QMessageBox.warning(self, "경고", f"{section} 설정이 파일에 없습니다.")
except Exception as e:
print(f"실패 : {e}")
def saveBusinessInfo(self):
config = configparser.ConfigParser()
section = self.business_number
config[section] = {
'businessName': self.businessNameInput.text(),
'businessNumber': self.businessNumberInput.text(),
'businessPhone': self.businessPhoneInput.text(),
'businessAddress': self.businessAddressInput.text(),
'businessDate': self.businessDateInput.text(),
'businessEtc1': self.businessEtc1Input.text(),
'businessEtc2': self.businessEtc2Input.text(),
'businessEtc3': self.businessEtc3Input.text(),
'businessEtc4': self.businessEtc4Input.text(),
'CouPang_ID': self.market_Keys["쿠팡ID"].text(),
'CouPang_CODE': self.market_Keys["업체코드"].text(),
'CouPang_Access_Key': self.market_Keys["Access_Key"].text(),
'CouPang_Secret_Key': self.market_Keys["Secret_Key"].text(),
'CouPang_OrderCollection': self.market_Keys["쿠팡 주문수집 여부"].isChecked(),
'CouPang_API_Verification': self.market_Keys["쿠팡 API검증 여부"].isChecked(),
'SmartStore_API_Verification': self.market_Keys["스스 API검증 여부"].isChecked(),
'SmartStore_OrderCollection': self.market_Keys["스스 주문수집 여부"].isChecked(),
'SmartStore_APP_ID': self.market_Keys["APP_ID"].text(),
'SmartStore_APP_PW': self.market_Keys["APP_PW"].text(),
'SmartStore_SS_ID': self.market_Keys["스마트스토어 ID"].text(),
'SmartStore_SS_PW': self.market_Keys["스마트스토어 비밀번호"].text(),
'ESM_AUCTION_ID': self.market_Keys["옥션 ID"].text(),
'ESM_GMARKET_ID': self.market_Keys["G마켓 ID"].text(),
'ESM_API_Verification': self.market_Keys["ESM API검증 여부"].isChecked(),
'ESM_OrderCollection': self.market_Keys["ESM 주문수집 여부"].isChecked(),
'Street11_Domestic_API_KEY': self.market_Keys["API_KEY"].text(),
'Street11_Domestic_OrderCollection': self.market_Keys["Street11국내 주문수집 여부"].isChecked(),
'Street11_Domestic_API_Verification': self.market_Keys["Street11국내 API검증 여부"].isChecked(),
'Street11_Global_API_KEY': self.market_Keys["API_KEY"].text(),
'Street11_Global_OrderCollection': self.market_Keys["Street11글로벌 API검증 여부"].isChecked(),
'Street11_Global_API_Verification': self.market_Keys["Street11글로벌 주문수집 여부"].isChecked(),
'LotteOn_API_KEY': self.market_Keys["API_KEY"].text(),
'LotteOn_OrderCollection': self.market_Keys["롯데온 API검증 여부"].isChecked(),
'LotteOn_API_Verification': self.market_Keys["롯데온 주문수집 여부"].isChecked()
}
file_path, _ = QFileDialog.getSaveFileName(self, "Save Config File", "", "Config Files (*.ini)")
if file_path:
save_config(config, file_path)
QMessageBox.information(self, "성공", "설정이 성공적으로 저장되었습니다.")
def addMarketTabs(self, title):
#print(f"addMarketTabs : {title}")
tab = QWidget()
tabLayout = QVBoxLayout(tab)
tab.setLayout(tabLayout) # 생성된 레이아웃을 탭 위젯에 설정
# 공통 사항 추가
#Key_API_Verification = self.create_Toggle(f"{title} API검증 여부")
#Key_OrderCollection = self.create_Toggle(f"{title} 주문수집 여부")
#tabLayout.addLayout(Key_API_Verification)
#tabLayout.addLayout(Key_OrderCollection)
if title =='쿠팡':
#print(f"title : {title} 사항 추가")
Key_CouPang_ID = self.create_InputLabel("쿠팡ID")
Key_CouPang_CODE = self.create_InputLabel("업체코드")
Key_CouPang_Access_Key = self.create_InputLabel("Access_Key")
Key_CouPang_Secret_Key = self.create_InputLabel("Secret_Key")
Key_API_Verification = self.create_Toggle(f"{title} API검증 여부")
Key_OrderCollection = self.create_Toggle(f"{title} 주문수집 여부")
tabLayout.addLayout(Key_API_Verification)
tabLayout.addLayout(Key_OrderCollection)
tabLayout.addLayout(Key_CouPang_ID)
tabLayout.addLayout(Key_CouPang_CODE)
tabLayout.addLayout(Key_CouPang_Access_Key)
tabLayout.addLayout(Key_CouPang_Secret_Key)
if title =='스스':
#print(f"title : {title} 사항 추가")
Key_SmartStore_APP_ID = self.create_InputLabel("APP_ID")
Key_SmartStore_APP_PW = self.create_InputLabel("APP_PW")
Key_SmartStore_SS_ID = self.create_InputLabel("스마트스토어 ID")
Key_SmartStore_SS_PW = self.create_InputLabel("스마트스토어 비밀번호")
Key_API_Verification = self.create_Toggle(f"{title} API검증 여부")
Key_OrderCollection = self.create_Toggle(f"{title} 주문수집 여부")
tabLayout.addLayout(Key_API_Verification)
tabLayout.addLayout(Key_OrderCollection)
tabLayout.addLayout(Key_SmartStore_APP_ID)
tabLayout.addLayout(Key_SmartStore_APP_PW)
tabLayout.addLayout(Key_SmartStore_SS_ID)
tabLayout.addLayout(Key_SmartStore_SS_PW)
if title =='ESM':
#print(f"title : {title} 사항 추가")
Key_ESM_AUCTION_ID = self.create_InputLabel("옥션 ID")
Key_ESM_GMARKET_ID = self.create_InputLabel("G마켓 ID")
Key_API_Verification = self.create_Toggle(f"{title} API검증 여부")
Key_OrderCollection = self.create_Toggle(f"{title} 주문수집 여부")
tabLayout.addLayout(Key_API_Verification)
tabLayout.addLayout(Key_OrderCollection)
tabLayout.addLayout(Key_ESM_AUCTION_ID)
tabLayout.addLayout(Key_ESM_GMARKET_ID)
if title =='Street11국내':
#print(f"title : {title} 사항 추가")
Key_11ST_Domestic_API_KEY = self.create_InputLabel("API_KEY")
Key_API_Verification = self.create_Toggle(f"{title} API검증 여부")
Key_OrderCollection = self.create_Toggle(f"{title} 주문수집 여부")
tabLayout.addLayout(Key_API_Verification)
tabLayout.addLayout(Key_OrderCollection)
tabLayout.addLayout(Key_11ST_Domestic_API_KEY)
if title =='Street11글로벌':
#print(f"title : {title} 사항 추가")
Key_11ST_Global_API_KEY = self.create_InputLabel("API_KEY")
Key_API_Verification = self.create_Toggle(f"{title} API검증 여부")
Key_OrderCollection = self.create_Toggle(f"{title} 주문수집 여부")
tabLayout.addLayout(Key_API_Verification)
tabLayout.addLayout(Key_OrderCollection)
tabLayout.addLayout(Key_11ST_Global_API_KEY)
if title =='롯데온':
#print(f"title : {title} 사항 추가")
Key_LotteOn_API_KEY = self.create_InputLabel("API_KEY")
Key_API_Verification = self.create_Toggle(f"{title} API검증 여부")
Key_OrderCollection = self.create_Toggle(f"{title} 주문수집 여부")
tabLayout.addLayout(Key_API_Verification)
tabLayout.addLayout(Key_OrderCollection)
tabLayout.addLayout(Key_LotteOn_API_KEY)
#print("marketTabWidget 추가")
self.marketTabWidget.addTab(tab, title)
return tab
def create_InputLabel(self, label_text):
#print(f"create_InputLabel : {label_text} 추가")
layout = QHBoxLayout()
label = QLabel(label_text)
textInput = QLineEdit()
layout.addWidget(label)
layout.addWidget(textInput)
self.market_Keys[label_text] = textInput
# 예시: QLineEdit 객체에 접근하여 텍스트 설정
#self.inputs["쿠팡ID"].setText("사용자ID123")
#self.inputs["쿠팡 Access Key"].setText("AccessKeyXYZ")
# 예시: QLineEdit 객체로부터 텍스트 읽어오기
#coupangId = self.inputs["쿠팡ID"].text()
#accessKey = self.inputs["쿠팡 Access Key"].text()
return layout
def create_Toggle(self, label_text):
#print(f"create_Toggle : {label_text} 추가")
layout = QHBoxLayout()
label = QLabel(label_text)
switch = ToggleSwitch(self)
layout.addWidget(label)
layout.addWidget(switch)
self.market_Keys[label_text] = switch
return layout
def addInputField(self, layout, label, widget):
row = QHBoxLayout()
row.addWidget(QLabel(label))
row.addWidget(widget)
layout.addLayout(row)

View File

@ -80,3 +80,19 @@ class MarketConfigWidget(QWidget):
QMessageBox.information(self, "성공", "사업자 변경이 실행되었습니다.")
except Exception as e:
QMessageBox.critical(self, "실패", f"사업자 변경 실행 중 오류 발생: {e}")
def loadBusinessInfo(self, businessInfo):
self.businessNameInput.setText(businessInfo.get('name', ''))
self.businessNumberInput.setText(businessInfo.get('number', ''))
self.businessPhoneInput.setText(businessInfo.get('phone', ''))
self.businessAddressInput.setText(businessInfo.get('address', ''))
self.connectedCardInput.setText(businessInfo.get('card', ''))
def loadMarketInfo(self, config):
# 예: 쿠팡 마켓 설정 로드
coupang_key = f"{self.business_number}_coupang"
if coupang_key in config:
self.coupangApiKeyInput.setText(config[coupang_key].get('api_key', ''))
# 추가 마켓 정보 로드 로직 구현...

84
src/toggleSwitch.py Normal file
View File

@ -0,0 +1,84 @@
from PyQt5.QtCore import Qt, QRect, QPropertyAnimation, pyqtProperty, pyqtSignal, QPoint
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtWidgets import QWidget
class ToggleSwitch(QWidget):
clicked = pyqtSignal(bool)
def __init__(self, parent=None):
super(ToggleSwitch, self).__init__(parent)
self.setFixedSize(60, 30)
self._checked = False
self._circle_color_checked = QColor('red')
self._circle_color_unchecked = QColor('gray')
self._background_color = QColor('white')
self._circle_pos = QPoint(0, 0) # Circle's initial position.
self.animation = QPropertyAnimation(self, b"circle_pos")
self.animation.setDuration(250)
self._init_position()
@pyqtProperty(QPoint)
def circle_pos(self):
return self._circle_pos
@circle_pos.setter
def circle_pos(self, pos):
self._circle_pos = pos
self.update()
def _init_position(self):
if self._checked:
self._circle_pos.setX(30)
else:
self._circle_pos.setX(0)
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self._checked = not self._checked
self.clicked.emit(self._checked)
self._update_animation()
self.update()
super(ToggleSwitch, self).mousePressEvent(event)
def _update_animation(self):
if self._checked:
self.animation.setStartValue(QPoint(0, 0))
self.animation.setEndValue(QPoint(30, 0))
else:
self.animation.setStartValue(QPoint(30, 0))
self.animation.setEndValue(QPoint(0, 0))
self.animation.start()
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing)
painter.setPen(Qt.NoPen)
painter.setBrush(self._background_color)
painter.drawRoundedRect(QRect(0, 0, 60, 30), 15, 15)
circle_color = self._circle_color_checked if self._checked else self._circle_color_unchecked
painter.setBrush(circle_color)
painter.drawEllipse(self._circle_pos.x(), self._circle_pos.y(), 30, 30)
def setChecked(self, checked):
if self._checked != checked:
self._checked = checked
self._update_animation()
self.update()
def isChecked(self):
return self._checked
def setState(self, state):
"""ToggleSwitch의 상태를 설정합니다.
Args:
state (bool): True로 설정하면 스위치를 체크 상태로, False로 설정하면 언체크 상태로 변경합니다.
"""
if self._checked != state:
self._checked = state
self._update_animation()
self.clicked.emit(self._checked)
self.update()