免费源码Git地址:
git clone https://gitee.com/DyTheListKnight/click-html-project.git
博客资源已绑定
项目概述
DYTeam ClickHtmlProject 是一个基于 PyQt5 + HTML/JavaScript 的桌面自动化点击工具,集成了 OCR 文字识别、图像相似度对比、定时点击等多种功能。项目采用模块化设计,支持打包成独立可执行文件,无需安装额外依赖即可运行。
项目架构
1. 启动入口 (main.py)
文件位置: <mcfile name="main.py" path="c:\Users\29790\Desktop\DYTeam\Project\ClickHtmlProject\main.py"></mcfile>
核心职责:
-
应用程序入口点,负责初始化整个系统
-
设置 Qt WebEngine 环境变量和路径配置
-
调用
htmlViewManager
启动主应用 -
处理 PyInstaller 打包模式下的资源路径问题
关键功能:
def setup_qtwebengine_paths(): """配置 Qt WebEngine 路径 - 解决打包后的资源缺失问题""" # 设置 WebEngine 进程路径 # 配置资源文件和本地化文件路径 # 添加 Qt 库路径到系统 PATH
2. 主干程序 - HTML视图管理器 (htmlViewManager.py)
文件位置: <mcfile name="htmlViewManager.py" path="c:\Users\29790\Desktop\DYTeam\Project\ClickHtmlProject\python\core\htmlViewManager.py"></mcfile>
核心职责:
-
创建和管理 PyQt5 应用程序主窗口
-
集成 QWebEngineView 加载 HTML 界面
-
实现 JavaScript 与 Python 的双向通信
-
管理全局热键监听(紧急停止功能)
-
处理窗口最小化/恢复逻辑
核心类:
-
HTMLAppContainer
: 主应用容器,管理 WebView 和窗口属性 -
JavaScriptBridge
: JavaScript 与 Python 通信桥梁 -
HotkeySignalHandler
: 热键信号处理器,实现跨线程通信
关键特性:
-
支持开发环境和打包环境的 HTML 页面加载
-
全局热键监控(按1键紧急停止)
-
窗口智能最小化/恢复(执行 OCR 时)
3. 服务层 - 事件处理器 (Service.py)
文件位置: <mcfile name="Service.py" path="c:\Users\29790\Desktop\DYTeam\Project\ClickHtmlProject\python\service\Service.py"></mcfile>
核心职责:
-
作为 HTML/JavaScript 与 Python 功能模块的唯一交互入口
-
统一处理所有前端事件并分发到对应服务
-
管理各个功能服务的生命周期(启动/停止)
-
协调窗口状态管理(最小化/恢复)
事件处理流程:
JavaScript事件 → Service.handle_event() → 对应功能服务
支持的事件类型:
-
pageLoaded
: 页面加载,停止所有服务 -
images
: 图像识别和处理 -
ocrStart
: 启动 OCR 文字监控 -
similarStart
: 启动相似度监控 -
start
: 启动定时点击
4. 功能服务模块
4.1 图像服务 (imageService.py)
职责: 处理屏幕截图选择和图像保存
-
实现屏幕区域选择功能
-
截图保存到外部存储(D盘固定位置)
-
与 OCR 处理模块集成
4.2 文字服务 (TextService.py)
职责: OCR 文字识别和监控
-
调用 Tesseract-OCR 引擎进行文字识别
-
实现定时文字监控功能
-
支持中文字符识别
4.3 相似度服务 (SimilarService.py)
职责: 图像相似度对比监控
-
使用 OpenCV 进行图像模板匹配
-
实时监控屏幕区域与目标图像的相似度
-
相似度达到阈值时触发点击操作
4.4 时间服务 (TimeService.py)
职责: 定时点击功能
-
按照设定的时间间隔执行点击操作
-
支持启动/停止控制
-
可配置点击间隔参数
5. 工具模块 (utils)
5.1 外部文件管理器 (ExternalFileManager.py)
文件位置: <mcfile name="ExternalFileManager.py" path="c:\Users\29790\Desktop\DYTeam\Project\ClickHtmlProject\python\utils\ExternalFileManager.py"></mcfile>
核心职责:
-
管理项目目录结构创建(D:/DYTeam/ClickHtmlProject/)
-
Tesseract-OCR 解压和路径配置
-
JSON 配置文件的读写管理
-
图像文件的外部存储管理
关键特性:
-
智能解压: 检测到目标路径已存在时跳过解压,提升启动速度
-
固定路径: 所有资源统一存放到 D 盘固定位置,便于管理和维护
-
懒加载: 只在需要时创建目录和文件
5.2 JSON数据管理器 (JsonDataManager.py)
职责: 动态配置数据管理
-
管理 Dynamic.json 配置文件
-
提供配置数据的读取和更新接口
-
自动创建缺失的配置文件
5.3 OCR处理器 (OCRProcessor.py)
职责: OCR 文字识别核心
-
调用 Tesseract-OCR 引擎
-
图像预处理和文字提取
-
中文语言包支持
5.4 屏幕选择器 (ScreenSelector.py)
职责: 屏幕区域选择界面
-
提供可视化区域选择界面
-
坐标和尺寸计算
-
截图预览功能
5.5 图像对比工具 (imageCompare.py)
职责: 图像相似度计算
-
OpenCV 模板匹配算法
-
相似度阈值判断
-
实时图像对比
5.6 点击工具 (clickUtils.py)
职责: 鼠标点击操作
-
跨平台鼠标点击实现
-
点击坐标计算
-
点击事件模拟
外部文件资源管理 (modules)
modules 目录结构
modules/ └── Tesseract-OCR/ # OCR 引擎完整环境 ├── tesseract.exe # 主程序 ├── tessdata/ # 语言数据文件 │ ├── eng.traineddata # 英文语言包 │ ├── chi_sim.traineddata # 简体中文 │ └── chi_tra.traineddata # 繁体中文 └── *.dll # 依赖库文件
资源打包过程
-
开发环境: modules 目录作为外部资源存在,不直接打包到 exe
-
首次运行: ExternalFileManager 检测到 D 盘不存在 Tesseract-OCR 时自动解压
-
后续运行: 检测到已存在则跳过解压,直接使用现有资源
-
优势:
-
减小 exe 文件体积(仅首次需要解压)
-
支持资源更新(替换 modules 目录即可)
-
提升启动速度(避免重复解压)
-
PyInstaller 打包配置
在 <mcfile name="setup.py" path="c:\Users\29790\Desktop\DYTeam\Project\ClickHtmlProject\setup.py"></mcfile>
中配置:
-
隐藏导入: 确保 PyQt5、OpenCV、PIL 等库正确打包
-
数据文件: HTML 模板、CSS、JavaScript 资源
-
Qt WebEngine: 特殊处理 WebEngine 资源文件
-
外部工具: Tesseract-OCR 作为外部资源独立管理
项目特色
1. 混合架构设计
-
前端: HTML5 + CSS3 + JavaScript 提供现代化 UI
-
后端: Python 提供强大的图像处理和自动化能力
-
通信: PyQt WebChannel 实现双向实时通信
2. 智能资源管理
-
动态解压: 首次运行时自动解压所需资源
-
缓存机制: 已解压资源重复使用,避免重复操作
-
外部存储: 重要数据统一存放到 D 盘,便于管理
3. 模块化服务
-
职责分离: 每个功能独立成服务模块
-
统一接口: Service.py 提供统一的事件处理入口
-
生命周期: 完善的服务启动/停止管理机制
4. 打包优化
-
单文件发布: 可打包成独立 exe,无需安装依赖
-
资源分离: 大体积资源外部管理,减小主程序体积
-
环境兼容: 自动处理 Qt WebEngine 等复杂依赖
使用场景
本工具适用于需要自动化点击操作的各类场景:
-
网页自动化: 定时点击、表单提交、数据采集
-
游戏辅助: 自动点击、监控识别、定时任务
-
办公自动化: 重复性点击操作、监控提醒
-
测试工具: UI 自动化测试、功能验证
技术栈
-
GUI框架: PyQt5 + Qt WebEngine
-
图像处理: OpenCV + PIL
-
文字识别: Tesseract-OCR
-
打包工具: PyInstaller
-
前端技术: HTML5 + CSS3 + JavaScript
-
通信机制: Qt WebChannel
项目结构总结
ClickHtmlProject/ ├── main.py # 启动入口,环境配置 ├── python/ │ ├── core/ │ │ └── htmlViewManager.py # 主干程序,UI管理 │ ├── service/ # 功能服务层 │ │ ├── Service.py # 事件总线 │ │ ├── imageService.py # 图像处理 │ │ ├── TextService.py # OCR文字识别 │ │ ├── SimilarService.py # 相似度对比 │ │ └── TimeService.py # 定时点击 │ ├── utils/ # 工具模块 │ │ ├── ExternalFileManager.py # 外部文件管理 │ │ ├── JsonDataManager.py # 配置管理 │ │ ├── OCRProcessor.py # OCR处理核心 │ │ ├── ScreenSelector.py # 屏幕选择器 │ │ ├── imageCompare.py # 图像对比 │ │ └── clickUtils.py # 点击工具 │ └── config/ # 配置文件 ├── html/ # 前端资源 │ ├── templates/ # HTML模板 │ ├── static/ # CSS/JS资源 │ └── about.html # 关于页面 └── modules/ # 外部资源 └── Tesseract-OCR/ # OCR引擎
通过这样的架构设计,项目实现了功能完整、易于维护、便于部署的自动化点击工具,既保证了开发效率,又确保了最终用户的使用体验。