更新版本
This commit is contained in:
@@ -1,27 +1,122 @@
|
||||
"""
|
||||
Model Team Tools - 主程序入口
|
||||
|
||||
应用程序主窗口的初始化和配置模块
|
||||
使用 PySide6 构建的桌面应用程序框架
|
||||
|
||||
主要功能:
|
||||
- 初始化 Qt 主窗口
|
||||
- 加载 Qt Material 样式表
|
||||
- 配置菜单栏和状态栏
|
||||
- 提供统一的日志记录接口
|
||||
"""
|
||||
import sys
|
||||
import importlib
|
||||
import logging
|
||||
import core
|
||||
import traceback
|
||||
|
||||
from PySide6.QtGui import *
|
||||
from PySide6.QtCore import *
|
||||
from PySide6.QtWidgets import *
|
||||
from pathlib import Path
|
||||
|
||||
from typing import Optional
|
||||
from PySide6.QtGui import QIcon
|
||||
from PySide6.QtWidgets import QApplication, QMainWindow, QMenuBar, QStatusBar,QFileDialog
|
||||
from qt_material import apply_stylesheet
|
||||
|
||||
from main_ui import Ui_MainWindow
|
||||
# 获取模块日志记录器
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# 版本号常量
|
||||
MAJOR_VER: int = 0 # 主版本号
|
||||
MINOR_VER: int = 0 # 次版本号
|
||||
MICRO_VER: int = 1 # 修订版本号
|
||||
|
||||
APP_NAME: str = "Model Team Tools"
|
||||
APP_VERSION: str = f"{MAJOR_VER}.{MINOR_VER}.{MICRO_VER}"
|
||||
|
||||
|
||||
class MainWindow(QMainWindow,Ui_MainWindow):
|
||||
def __init__(self):
|
||||
class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
"""
|
||||
主窗口类
|
||||
|
||||
继承自 QMainWindow(Qt 主窗口基类)和 Ui_MainWindow(Qt Designer 生成的 UI 界面)
|
||||
负责应用程序主窗口的初始化、样式配置和界面布局
|
||||
"""
|
||||
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
self.setupUi(self)
|
||||
|
||||
self.initUI()
|
||||
|
||||
def initUI(self):
|
||||
self.setWindowIcon(QIcon("main.ico"))
|
||||
self.setWindowTitle("Model Team Tools")
|
||||
def initUI(self) -> None:
|
||||
"""
|
||||
初始化用户界面组件
|
||||
|
||||
执行以下初始化操作:
|
||||
- 加载 Qt 样式表和自定义样式
|
||||
- 设置窗口标题
|
||||
- 配置菜单栏
|
||||
- 配置状态栏
|
||||
- 记录初始化日志
|
||||
|
||||
注意:此方法在主窗口创建后调用
|
||||
"""
|
||||
self.load_stylesheet()
|
||||
self.setWindowTitle(APP_NAME)
|
||||
self.setWindowIcon(QIcon('resources/main.ico'))
|
||||
self.menubar: Optional[QMenuBar] = self.menuBar()
|
||||
self.statusbar: QStatusBar = self.statusBar()
|
||||
self.statusbar.showMessage(f"Version: {APP_VERSION}")
|
||||
|
||||
self.action_tools.triggered.connect(self.on_tools)
|
||||
|
||||
def load_stylesheet(self) -> None:
|
||||
"""
|
||||
加载 Qt 样式表和自定义样式文件
|
||||
|
||||
使用 qt_material 库加载暗色主题,并应用自定义 QSS 样式表
|
||||
失败时记录错误日志,但不影响应用继续运行(降级策略)
|
||||
|
||||
异常处理:
|
||||
- FileNotFoundError: 样式文件不存在
|
||||
- RuntimeError: 主题加载失败
|
||||
- 其他异常: 记录警告但不中断应用
|
||||
"""
|
||||
try:
|
||||
apply_stylesheet(self, style=None,theme='dark_teal.xml', css_file='resources/my.qss')
|
||||
except FileNotFoundError as e:
|
||||
logger.warning(f"样式文件未找到,使用默认主题: {e}")
|
||||
except RuntimeError as e:
|
||||
logger.warning(f"主题加载失败,使用默认主题: {e}")
|
||||
except Exception as e:
|
||||
logger.warning(f"样式加载失败,使用默认主题: {e}")
|
||||
|
||||
def on_tools(self) -> None:
|
||||
"""打开工具箱窗口
|
||||
|
||||
创建并显示工具箱窗口实例。包含完整的错误处理机制,
|
||||
确保任何异常都不会导致主程序崩溃。
|
||||
|
||||
异常处理:
|
||||
- 捕获所有异常并记录到日志
|
||||
- 显示详细的错误堆栈信息
|
||||
- 不影响主窗口的正常使用
|
||||
|
||||
日志记录:
|
||||
- 成功打开工具箱时记录 INFO 级别日志
|
||||
- 打开失败时记录 ERROR 级别日志
|
||||
"""
|
||||
try:
|
||||
self.tools = core.ToolsWindow()
|
||||
self.tools.show()
|
||||
logger.info("工具箱窗口已打开")
|
||||
except Exception as e:
|
||||
logger.error(f"无法打开工具箱窗口: {e}")
|
||||
logger.error(traceback.format_exc())
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = QApplication([])
|
||||
main = MainWindow()
|
||||
app = QApplication(sys.argv)
|
||||
main: MainWindow = MainWindow()
|
||||
main.show()
|
||||
sys.exit(app.exec())
|
||||
sys.exit(app.exec())
|
||||
Reference in New Issue
Block a user