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__": app = QApplication(sys.argv) asyncio.run(main()) sys.exit(app.exec_())