#!/usr/bin/env python # -*- coding: utf-8 -*- import sys from PyQt6.QtWidgets import QApplication, QMainWindow, QTabWidget, QWidget, QVBoxLayout from PyQt6.QtCore import Qt, QSize from ui.debug_module_window import DebugWindow from ui.play_module_window import PlayWindow from ui.log_viewer_window import LogViewerWindow # 导入任务类以确保它们被注册 from kodi_util.kodi_play.kodi_play_task import chuankou, LinkageTask # 导入日志模块 from kodi_util.LoggerToolModule import LoggerTool # 创建日志实例 logger = LoggerTool(name='application_logger', log_file='application.log', log_dir='logs') class MainApplication(QMainWindow): """主应用窗口,包含三个标签页""" def __init__(self): super().__init__() logger.info("开始初始化主应用程序") # 设置窗口标题和大小 self.setWindowTitle("多标签页应用") self.setMinimumSize(QSize(900, 700)) # 创建中央部件 self.central_widget = QWidget() self.setCentralWidget(self.central_widget) # 创建主布局 self.main_layout = QVBoxLayout(self.central_widget) self.main_layout.setContentsMargins(5, 5, 5, 5) self.main_layout.setSpacing(0) # 初始化UI try: self.init_ui() logger.info("主应用程序初始化完成") except Exception as e: logger.error(f"主应用程序初始化失败: {str(e)}") raise def init_ui(self): """初始化用户界面""" logger.info("开始初始化用户界面") # 创建标签页部件 self.tab_widget = QTabWidget() self.tab_widget.setTabPosition(QTabWidget.TabPosition.North) self.tab_widget.setDocumentMode(True) try: # 创建调试模块窗口 logger.info("创建调试模块窗口") self.debug_window = DebugWindow() # 创建播放模块窗口,使用默认配置文件路径 logger.info("创建播放模块窗口") self.play_window = PlayWindow() # 创建日志查看器窗口 logger.info("创建日志查看器窗口") self.log_viewer_window = LogViewerWindow() # 添加标签页 self.tab_widget.addTab(self.debug_window, "调试模块") self.tab_widget.addTab(self.play_window, "播放模块") self.tab_widget.addTab(self.log_viewer_window, "日志查看器") logger.info("标签页添加完成") # 将标签页部件添加到主布局 self.main_layout.addWidget(self.tab_widget) logger.info("用户界面初始化完成") except Exception as e: logger.error(f"初始化用户界面时发生错误: {str(e)}") raise if __name__ == "__main__": logger.info("应用程序启动") try: app = QApplication(sys.argv) logger.info("QApplication创建成功") window = MainApplication() logger.info("主窗口创建成功") window.show() logger.info("主窗口显示成功") logger.info("进入应用程序主循环") sys.exit(app.exec()) except Exception as e: logger.error(f"应用程序运行时发生错误: {str(e)}") sys.exit(1)