115 lines
4.2 KiB
Python
115 lines
4.2 KiB
Python
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMainWindow, QTabWidget, QMenuBar, QAction, QFileDialog, QVBoxLayout, QMessageBox
|
|
import sys
|
|
import asyncio
|
|
from asyncqt import QEventLoop
|
|
|
|
from src.log_config import setup_logging
|
|
from src.market_config import MarketConfigWidget
|
|
from src.config_handler import *
|
|
from src.webTask import *
|
|
|
|
class MainWindow(QMainWindow):
|
|
def __init__(self):
|
|
super().__init__()
|
|
setup_logging()
|
|
self.setWindowTitle("Market API Configurator")
|
|
self.setGeometry(100, 100, 800, 900)
|
|
self.initUI()
|
|
|
|
def initUI(self):
|
|
mainWidget = QWidget()
|
|
self.setCentralWidget(mainWidget)
|
|
|
|
# 메인 레이아웃 설정
|
|
mainLayout = QVBoxLayout(mainWidget)
|
|
|
|
# 탭 위젯 설정
|
|
self.businesstabWidget = QTabWidget()
|
|
mainLayout.addWidget(self.businesstabWidget)
|
|
|
|
percentageTab = MarketConfigWidget("퍼센티설정")
|
|
self.businesstabWidget.addTab(percentageTab, "퍼센티설정")
|
|
|
|
|
|
# 동적으로 사업자 탭 생성
|
|
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.loadPercentyButton = QPushButton("현재 퍼센티설정 불러오기")
|
|
self.applyBusinessButton = QPushButton("선택된 사업자 적용하기")
|
|
mainLayout.addWidget(self.loadPercentyButton)
|
|
mainLayout.addWidget(self.applyBusinessButton)
|
|
self.loadPercentyButton.clicked.connect(self.load_current_percenty_setting)
|
|
self.applyBusinessButton.clicked.connect(self.applay_current_business_setting)
|
|
|
|
# 메뉴바 및 설정 불러오기 액션 추가
|
|
menuBar = QMenuBar(self)
|
|
self.setMenuBar(menuBar)
|
|
fileMenu = menuBar.addMenu("&File")
|
|
loadAction = QAction("설정 불러오기", self)
|
|
loadAction.triggered.connect(self.loadConfig)
|
|
fileMenu.addAction(loadAction)
|
|
|
|
|
|
def loadConfig(self):
|
|
options = QFileDialog.Options()
|
|
fileName, _ = QFileDialog.getOpenFileName(self, "설정 파일 불러오기", "",
|
|
"INI Files (*.ini);;All Files (*)", options=options)
|
|
if fileName:
|
|
try:
|
|
config = load_config(fileName)
|
|
for i in range(self.businesstabWidget.count()):
|
|
tab = self.businesstabWidget.widget(i)
|
|
business_number = f"{i+1}사업자"
|
|
|
|
if business_number in config:
|
|
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}")
|
|
|
|
async def load_current_percenty_setting(self):
|
|
if not self.webtask:
|
|
self.webtask = WebTask()
|
|
await self.webtask.start()
|
|
# 여기에 설정 불러오는 추가적인 비동기 작업을 수행합니다.
|
|
print("설정 불러오기 작업 완료")
|
|
|
|
async def closeEvent(self, event):
|
|
if self.webtask:
|
|
await self.webtask.close()
|
|
event.accept()
|
|
|
|
|
|
# 메인 프로그램 실행
|
|
async def main():
|
|
window = MainWindow()
|
|
window.show()
|
|
webtask = WebTask()
|
|
await webtask.start()
|
|
# 로그인 성공 후 필요한 작업 수행...
|
|
await webtask.close()
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|
|
app = QApplication(sys.argv)
|
|
|
|
sys.exit(app.exec_()) |