# PyCppTool **Repository Path**: qq2635335819/py-cpp-tool ## Basic Information - **Project Name**: PyCppTool - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-14 - **Last Updated**: 2026-03-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Python-C++ 混合编程客户端工具 基于Python Tkinter和C++开发的跨语言桌面客户端工具,支持动态配置生成和高性能后端扩展。 ## 项目结构 ``` ├── InterfacePro/ # C++后端工程目录 │ ├── CMakeLists.txt # CMake配置文件 │ ├── build.bat # C++ DLL一键编译脚本 │ ├── include/ │ │ └── interface.h # C++导出接口定义 │ └── src/ │ └── interface.cpp # C++接口实现 ├── UiPro/ # Python UI前端目录 │ ├── main.py # 主程序入口,窗口初始化和Tab管理 │ ├── run_page.py # 运行页面模块,包含运行逻辑和日志显示 │ ├── setting_page.py # 设置页面模块,包含配置动态生成和保存逻辑 │ ├── py_interface.py # Python-C++接口模块,实现DLL动态加载和调用 │ ├── cfg.json # 配置文件,可自定义配置项 │ ├── requirements.txt # 依赖声明 │ ├── build.bat # Python程序一键打包脚本 │ └── README.md # 前端详细文档 ├── .gitignore # Git忽略配置 ├── interface.md # 接口需求文档 ├── ui.md # UI需求文档 └── README.md # 项目总览文档 ``` ## 功能特性 ### Python UI 前端 - **运行页面**:运行/停止按钮、实时日志输出(毫秒级时间戳)、C++消息实时显示 - **设置页面**:动态读取cfg.json生成配置控件、支持文本/数字/下拉/路径/复选框等多种控件类型 - **跨语言交互**:动态加载C++ DLL、线程安全的消息回调机制、自动降级为纯Python模式 - **打包支持**:一键一键打包为单EXE文件,绿色免安装 ### C++ 后端 - 双工作线程设计,每秒各发送一条消息到Python - 线程安全的启停控制,确保资源正确释放 - 标准C接口设计,易于扩展和维护 - 支持独立编译和版本更新 - 新增配置文件读取功能,支持JSON格式配置解析 - 内置nlohmann/json第三方库,无需额外依赖 ## 快速开始 ### 环境要求 - Python 3.7+ - Tkinter(Python标准库,通常自带) - (可选)Visual Studio 2022 + CMake 用于编译C++ DLL ### 编译C++ DLL 1. 进入InterfacePro目录 2. 双击`build.bat`脚本自动编译 3. 编译完成后将`build/bin/Release/InterfacePro.dll`复制到`UiPro`目录或打包后的EXE同目录 ### 运行Python程序 ```bash cd UiPro python main.py ``` ### 打包为EXE 1. 安装依赖: ```bash cd UiPro pip install -r requirements.txt ``` 2. 执行打包脚本: ```bash cd UiPro build.bat ``` 3. 打包完成后,EXE文件生成在 `UiPro/dist` 目录下 4. 将 `cfg.json` 和 `InterfacePro.dll` 复制到EXE同目录下即可运行 ## C++ 接口说明 ### 导出接口 ```cpp // 初始化函数,读取并解析cfg.json配置文件 // 参数:callback - 消息回调函数,C++通过此函数向Python发送消息 // 返回值:0成功,-1失败 int init(MessageCallback callback); // 启动后端程序,创建两个工作线程 void run(); // 停止后端程序,退出所有线程 void stop(); ``` ### 工作流程 1. Python调用`init(callback)`,传入消息回调函数并读取配置文件 2. C++解析cfg.json配置文件,将配置信息通过回调函数返回给Python 3. Python调用`run()`启动C++后端 4. C++创建两个线程,每秒各发送一条消息到Python 5. Python接收消息并显示在日志输出框中 6. Python调用`stop()`停止C++后端和所有线程 ## 目录说明 - **InterfacePro/**:C++后端代码,独立于Python前端,可单独编译和更新 - **UiPro/**:Python前端代码,包含UI界面和业务逻辑 - 前后端通过标准C接口交互,耦合度低,便于并行开发和维护 ## 常见问题 ### Q: 运行时提示找不到DLL? A: 请确保InterfacePro.dll和EXE在同一目录下,或和main.py在同一目录下。 ### Q: DLL版本更新后需要重新打包EXE吗? A: 不需要,直接替换DLL文件即可,EXE会自动加载最新版本的DLL。 ### Q: 可以只使用Python功能不使用C++后端吗? A: 可以,没有DLL时程序会自动降级为纯Python模式运行,所有UI功能正常可用。 ## 版本历史 - v1.3.0 - API优化:将set_message_callback整合到init函数中 - 简化接口调用流程,从两次调用简化为一次调用 - 提高代码内聚性,减少API使用错误的可能性 - 更新工作流程文档 - v1.2.0 - 新增第三方库目录结构,支持引入外部依赖 - 集成nlohmann/json库,支持JSON配置文件解析 - 新增init()导出接口,实现配置文件读取和解析功能 - CMake配置添加UTF-8编译选项,解决中文编码问题 - 运行逻辑优化,先初始化配置再启动后端服务 - 配置文件解析结果通过消息回调实时输出 - v1.1.0 - 新增Python-C++跨语言交互功能 - 新增C++ DLL后端工程,支持多线程消息发送 - 运行页面新增停止按钮 - 实现线程安全的消息队列机制 - 支持DLL未加载时降级为纯Python模式运行 - 重构项目结构,分离前后端代码 - v1.0.0 - 基础功能实现 - 双Tab页面结构 - 动态配置生成 - 日志输出功能 - 打包支持