import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog from asyncqt import QEventLoop from ui.main_window import MainWindow from ui.license_dialog import LicenseDialog from utils.config import ConfigManager from utils.logger import setup_logger import logging, os import asyncio def main(): config = ConfigManager() # config.ini 파일이 없을 경우 생성 if not os.path.exists('config.ini'): config._create_default_config() print("config.ini 파일이 생성되었습니다.") # log_level = config.get('DEFAULT', 'log_level', fallback='DEBUG') log_level = 'INFO' # 로그 파일 경로 설정 log_file_path = os.path.join(os.path.dirname(__file__), 'application.log') # 로그 설정 호출 logger = setup_logger(log_file=log_file_path, log_level=log_level) # logger = setup_logger(log_level) app = QApplication(sys.argv) app.setStyle('Fusion') # app.setStyle('windows') loop = QEventLoop(app) asyncio.set_event_loop(loop) license_dialog = LicenseDialog() if license_dialog.exec_() == QDialog.Accepted: main_window = MainWindow(config, logger) main_window.show() def cleanup(): print("프로그램 종료 중...") for task in asyncio.all_tasks(loop): task.cancel() loop.stop() app.aboutToQuit.connect(cleanup) with loop: try: loop.run_forever() except KeyboardInterrupt: pass finally: print("이벤트 루프 정리 중...") loop.close() print("이벤트 루프 종료 완료.") else: sys.exit(0) if __name__ == '__main__': main()