From 6bb68eb6b74fcc682051d8014d30a79743039149 Mon Sep 17 00:00:00 2001 From: "feifei.xu" <307327147@qq.com> Date: Tue, 14 Jul 2026 14:24:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/tools/tools.py | 45 +++++++++++++++++++++++++++++++++++++++++++-- main.py | 7 ++++--- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/core/tools/tools.py b/core/tools/tools.py index dee4842..412beda 100644 --- a/core/tools/tools.py +++ b/core/tools/tools.py @@ -12,14 +12,18 @@ Author: Model Team Version: 0.0.1 """ +import os +import sys import logging +import importlib.util from qt_material import apply_stylesheet from pathlib import Path from .tools_ui import Ui_FormTools from PySide6.QtGui import QIcon -from PySide6.QtWidgets import QWidget, QApplication + +from PySide6.QtWidgets import QWidget, QListWidgetItem logger = logging.getLogger(__name__) @@ -39,7 +43,7 @@ class ToolsWindow(QWidget, Ui_FormTools): Attributes: parent: 父窗口对象,默认为 None(顶级窗口) """ - def __init__(self, parent: QWidget = None) -> None: + def __init__(self, tools:dict, parent: QWidget = None) -> None: """初始化工具箱窗口 创建工具箱窗口实例,初始化 UI 界面。 @@ -51,7 +55,10 @@ class ToolsWindow(QWidget, Ui_FormTools): super().__init__(parent) self.setupUi(self) + self.tools = tools + self.initUI() + self.init_tool_list() self.load_stylesheet() def initUI(self) -> None: @@ -84,3 +91,37 @@ class ToolsWindow(QWidget, Ui_FormTools): logger.warning(f"主题加载失败,使用默认主题: {e}") except Exception as e: logger.warning(f"样式加载失败,使用默认主题: {e}") + + def init_tool_list(self): + if not os.path.exists(PLUGINS_PATH): + logger.error("服务器链接错误!") + return + sys.path.append(str(PLUGINS_PATH)) + + for tool in Path(PLUGINS_PATH).glob("*.pyd"): + tool_name = tool.stem + try: + module = importlib.import_module(tool_name) + + name = module.read_tool_name() + version = module.read_tool_version() + description = module.read_tool_description() + + if name in self.tools.keys(): + pass + else: + self.tools[name] = {} + self.tools[name]["version"] = version + self.tools[name]["description"] = description + + except Exception as e: + logger.error(f"{tool_name}无法加载:{str(e)}") + # if + sys.path.remove(str(PLUGINS_PATH)) + + def on_update_tool_card(self): + # for ke + # item = QListWidgetItem() + + pass + \ No newline at end of file diff --git a/main.py b/main.py index 4c7e66a..a66dbe1 100644 --- a/main.py +++ b/main.py @@ -11,7 +11,6 @@ Model Team Tools - 主程序入口 - 提供统一的日志记录接口 """ import sys -import importlib import logging import core import traceback @@ -48,6 +47,8 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.setupUi(self) self.initUI() + self.tools = dict() + def initUI(self) -> None: """ 初始化用户界面组件 @@ -107,8 +108,8 @@ class MainWindow(QMainWindow, Ui_MainWindow): - 打开失败时记录 ERROR 级别日志 """ try: - self.tools = core.ToolsWindow() - self.tools.show() + self.tool_window = core.ToolsWindow(self.tools) + self.tool_window.show() # logger.info("工具箱窗口已打开") except Exception as e: logger.error(f"无法打开工具箱窗口: {e}")