# 单机软件框架 **Repository Path**: silicon-painter/standalone-software-framework ## Basic Information - **Project Name**: 单机软件框架 - **Description**: 一个基于pyside6的通用单机软件框架,自用,方便各功能的集成,简化开发流程。 - **Primary Language**: Python - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-07-23 - **Last Updated**: 2025-07-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PySide6 应用程序框架 这是一个基于PySide6的模块化应用程序框架,提供了自定义工具栏、停靠窗口和按钮组件。使用Pydantic进行数据验证和配置管理。 ## 目录结构 ``` PysideFrame/ ├── basicwidget/ # 基础自定义部件 │ ├── toolbar/ # 工具栏组件 │ ├── button/ # 按钮组件 │ └── dockwidget/ # 停靠窗口组件 ├── core/ # 核心功能 │ ├── app.py # 应用程序类和主窗口类 │ ├── factory.py # 部件工厂类 │ ├── config.py # 配置管理类 │ └── models.py # Pydantic数据模型 ├── config/ # 配置文件目录 ├── icons/ # 图标文件夹 ├── main.py # 主程序入口 └── requirements.txt # 依赖项 ``` ## 功能特点 - 模块化设计,各组件独立管理 - 工厂模式创建和管理组件 - 自定义的浮动工具栏,只能吸附在菜单栏下方 - 自定义的停靠窗口,可以吸附在中央部件的左侧、右侧或底部 - 自定义的工具栏按钮,支持文本和图标 - 使用Pydantic模型进行数据验证和配置管理 - 基于JSON的配置文件,易于编辑和维护 ## 安装依赖 ```bash pip install -r requirements.txt ``` ## 运行程序 ```bash python main.py ``` ## 配置文件 应用程序会自动在config目录下创建以下配置文件: - `app.json`: 主应用程序配置,包含窗口大小、位置、菜单、工具栏和停靠窗口的配置 ## 如何扩展 ### 添加新的工具栏按钮 ```python # 方法1: 通过代码添加 button_config = ButtonConfig( text="按钮名称", icon="图标路径", callback_name="回调函数名称" ) toolbar_config = ToolbarConfig( barname="工具栏名称", items=[button_config] ) # 将工具栏添加到菜单中 menu_config = MenuConfig( title="菜单标题", toolbars=[toolbar_config] ) self.main_window.init_tab_menu([menu_config]) # 方法2: 通过配置文件添加 # 编辑config/app.json,更新menus数组 ``` ### 添加新的停靠窗口 ```python # 方法1: 通过代码添加 dock_config = DockWidgetConfig( title="窗口标题", area="left", # left, right, bottom widget_type="editor", # 自定义部件类型 widget_config={"param1": "value1"} # 部件参数 ) self.main_window.add_dock_widget(dock_config) # 方法2: 通过配置文件添加 # 编辑config/app.json,在dock_widgets列表中添加新的停靠窗口配置 ``` ### 添加新的菜单项 ```python # 方法1: 通过代码添加 button_config = ButtonConfig( text="菜单项文本", callback_name="回调函数名称", shortcut="Ctrl+X" ) toolbar_config = ToolbarConfig( barname="工具栏名称", items=[button_config] ) menu_config = MenuConfig( title="菜单标题", toolbars=[toolbar_config] ) menus = [menu_config] self.main_window.init_tab_menu(menus) # 方法2: 通过配置文件添加 # 编辑config/app.json,在menus列表中添加新的菜单配置 ``` ### 注册新的回调函数 ```python # 在Application类中定义回调函数 def my_callback(self): print("自定义回调函数") # 然后在_register_callbacks方法中注册 def _register_callbacks(self): callbacks = { # 现有回调 "new_file": self.new_file, # 添加新回调 "my_callback": self.my_callback } self.main_window.register_callbacks(callbacks) ```