ChangePercenty/main.py

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