# python-ui渲染框架 **Repository Path**: coderyrepos/python-ui-rendering-framework ## Basic Information - **Project Name**: python-ui渲染框架 - **Description**: 基于tk的轻量级python-ui渲染框架 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-30 - **Last Updated**: 2025-11-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # python-ui渲染框架 ## 介绍 自己手写的python-ui渲染框架基于tk/qt,已经初步实现了一个工具集合,里面的组件目前用于计算机网络学习。 # python-ui渲染框架 ## 项目简介 本项目是一个基于 Python 的 UI 渲染框架,支持 PyQt5(主推)和 Tkinter(旧版),可自动加载和渲染 `components` 文件夹下的自定义工具组件。适用于计算机网络、数据处理等场景,支持高度扩展和自定义。 ## 主要特性 - 支持自动发现并渲染 `components` 目录下的所有组件 - 组件化设计,易于扩展和维护 - 支持多种元素类型:文本、文件选择、文件夹选择、枚举、长文本、数字、按钮、网页、图片等 - 元素支持自定义回调(change/click)、显示/隐藏、启用/禁用、宽高设置等 - 日志系统,支持操作日志查看 - 高DPI自适应,界面美观 - 支持多线程日志处理,不卡主界面 - 组件树形导航,支持动态显示/隐藏 - 详细的 demo 组件示例,便于二次开发 ## 目录结构 ``` . ├── ui_app_qt.py # 主程序入口(PyQt5版) ├── ui_component_abstract.py # 组件抽象基类 ├── ui_utils_qt.py # Qt工具函数 ├── ui_widgets_loader.py # 动态加载widgets ├── ui_components_loader.py # 动态加载components ├── ui_log_worker.py # 日志处理线程 ├── ui_app_style.css # UI样式表 ├── requirements.txt # 依赖包列表 ├── components/ # 所有自定义工具组件 │ ├── demo/ # 示例组件 │ ├── data_tools/ # 数据处理相关 │ ├── scapy/ # 网络安全相关 │ └── ... # 其他自定义组件 ├── widgets/ # UI元素类型实现 ├── data/ # 组件缓存数据 ├── logs/ # 操作日志 ├── build/ # 打包生成目录 ├── myenv/ # 虚拟环境(推荐) └── ... ``` ## 安装与运行 ### 1. 环境要求 - Python 3.7 及以上 - Windows 10/11(推荐) - 建议使用虚拟环境 ### 2. 安装步骤 ```powershell # 创建虚拟环境 python -m venv myenv # 激活虚拟环境(PowerShell) .\myenv\Scripts\Activate.ps1 # 安装依赖 pip install -r requirements.txt ``` ### 3. 启动程序 ```powershell python ui_app_qt.py ``` ### 4. 打包为可执行文件 ```powershell pyinstaller --onefile --windowed .\ui_app_qt.py ``` ### 5. 退出虚拟环境 ```powershell deactivate ``` ## 组件开发与扩展 - 新建 Python 文件至 `components` 文件夹 - 继承 `UIComponent` 抽象基类(见 `ui_component_abstract.py`) - 必须定义以下属性: - `name`: 组件名称(树形图显示) - `desc`: 组件描述(悬停提示) - `path`: 组件路径(树形图分组) - `sort`: 排序权重(数字越大越靠前) - `elements`: 元素字典,支持多种类型和属性 ### 元素属性说明 | 属性 | 说明 | | --------- | ------------------------------------------------------------ | | name | 元素名称 | | value | 元素值(按钮时为显示文本) | | desc | 元素描述 | | type | 元素类型(text/file/folder/enum/longtext/num/button/web/img)| | options | 枚举选项(type=enum时) | | change | 值变化时回调函数(参数:old_value, new_value) | | click | 点击时回调函数(参数:value) | | enable | 是否可交互(默认True) | | show | 是否显示(默认True) | | width | 元素宽度 | | height | 元素高度(web/longtext/img) | | security | web元素安全策略 | > 详细用法请参考 `components/demo/demo_component1.py` 等示例。 ## 已知问题 1. web组件偶尔会出现内存泄漏导致 OOM 2. components 文件夹下的 Python 文件必须继承 `UIComponent` 抽象类 3. click 属性仅对 button 类型做了详细测试 ## 待完善功能 - 更多组件类型和属性 - 更丰富的交互方式 - 更完善的异常处理和日志系统 ## 联系与反馈 如有建议或问题,欢迎提交 Issue 或 PR。 --- 如需进一步定制内容,请补充说明。 3. 添加更多组件交互方式