Qflow 是一个本人原创基于 Python 开发的轻量级可视化自动化流程编辑器。用户通过简单拖拽节点、连接连线的方式,构建复杂的桌面自动化任务,源码开放、绿色单文件、离线不联网、不需要独显!
它集成了 图像识别 (OpenCV)、键鼠模拟、音频检测 以及 逻辑控制,非常适合用于办公自动化或重复性任务处理。
- 🎨 可视化编辑器:支持节点拖拽、无限画布缩放/平移、框选。
- 👁️ 视觉感知:
- 图像寻找:集成 OpenCV,支持模板匹配和特征匹配(SIFT/AKAZE),支持多尺度搜索。
- 静止检测:监控屏幕特定区域是否静止(例如判断加载是否完成)。
- 🖱️ 键鼠控制:
- 支持鼠标点击、移动、拖拽、滚动。
- 支持键盘文本输入及组合键(快捷键)操作。
- 🔊 音频触发:能够检测系统音量峰值(Windows),实现"听到声音执行操作"。
- 🧠 逻辑控制:
- 包含循环 (Loop)、序列 (Sequence)、延时 (Wait)。
- 支持变量 (Set/Get) 和条件分流 (Switch),可构建复杂的业务逻辑。
- 🛠️ 便捷工具:
- 内置截图工具,直接截取屏幕目标作为节点参数。
- 支持多种主题切换(Dark/Light/Hacker)。
- 全局快捷键启停。
- 快捷键增强:设置面板现在支持绑定
F1-F12功能键、小键盘按键以及更多特殊字符组合,不再局限于 Alt+数字/字母。 - UI 交互提示:
- 左侧组件工具箱新增鼠标悬停提示 (Tooltip),显示组件功能说明。
- 右侧属性面板在未选中节点时,现在会显示操作指引而非空白。
- 鼠标滚动参数:为鼠标组件的“滚动”模式新增了“滚动量”输入框,支持自定义滚动幅度(正数为上滚,负数为下滚)。
- 窗口绑定逻辑优化:在执行找图、鼠标、键盘等交互操作前,现在会强制将绑定的目标窗口置顶并聚焦。
- 说明:解决了窗口在后台或被遮挡时,截图识别和模拟输入坐标偏移或失效的问题。
- 双击设置简化:优化了鼠标组件的属性面板逻辑。选择“双击”动作时自动隐藏“点击次数”选项,避免逻辑重复。
- 修复找图超时与滚动失效:修正了
VisionEngine内部的循环逻辑,解决了找图组件中“超时时间”不生效以及“未找到时尝试滚动”无法触发的问题。 - 修复特征匹配(Feature Match)失败:修复了 AKAZE 特征匹配算法在运行时因图像格式不一致导致无法识别目标的问题(统一了灰度图处理逻辑)。
- 修复属性面板同步问题:修复了在画布节点上直接修改参数(如鼠标动作下拉框)时,右侧属性面板未能实时刷新显示对应设置项的 Bug。
- 修复鼠标滚动操作:解决了鼠标组件选择“滚动”模式后因缺少参数导致操作无法执行的问题。
- 通知节点 (Notify Node)
- 新增
🔔 提示节点,支持自定义文本、持续时间及提示音。 - 采用非阻塞式 Toast 弹窗(VisualTips),不影响流程运行。
- 新增
- 多屏幕支持 (Multi-Monitor Support)
- 引入虚拟屏幕坐标系 (
Virtual Screen Geometry)。
- 引入虚拟屏幕坐标系 (
- 键盘“粘贴模式”
- 在
键盘节点中新增“粘贴模式”选项。 - 利用剪贴板输入文本,解决中文乱码及输入速度过慢的问题(需安装
pyperclip)。
- 在
- 🛠️ 修复 (Bug Fixes)
- 修复了在不同节点间快速切换时,上一个节点的属性值错误覆盖当前节点数据的严重 Bug(通过闭包绑定解决)。
- 修复截图坐标错误
- 新增绑定窗口节点:所有操作都可以绑定到用户选定的窗口中,确保后续操作在目标窗口内进行。
- 新增程序控制节点:
- 🚀 打开程序:支持启动外部应用程序
- ⚓ 绑定窗口:可精确绑定特定窗口,实现更稳定的窗口内操作
- 界面优化:
- 移除了 Hacker 主题,保留 Dark 和 Light 主题
- 优化了节点颜色配置,新增窗口节点专用颜色
- 功能增强:
- 日志系统重构,简化了日志级别显示
- 端口连接增强,新增 success/fail 端口支持
- 稳定性提升:
- 改进了 DPI 缩放处理
- 优化了窗口检测算法,提高了准确性
- Python 3.8+
- Windows (音频检测功能依赖 Windows API,其他功能可在 macOS/Linux 运行但需调整部分代码)
-
克隆仓库
git clone https://github.com/Qwejay/Qflow.git cd Qflow -
安装依赖 建议使用虚拟环境:
pip install -r requirements.txt
注意:如果没有安装
opencv-python,程序仍可运行,但高级图像识别功能受限。 -
运行程序
python main.py
- 左侧工具栏:包含所有可用节点,按类别分组(逻辑、动作、视觉)。
- 中间画布:主要工作区。右键点击画布也可呼出节点菜单。
- 右侧属性面板:点击任意节点,在此处配置详细参数(如点击坐标、图片阈值、循环次数等)。
- 底部日志:显示当前的运行状态和错误信息。
| 操作 | 快捷键 |
|---|---|
| 启动流程 | <Alt> + 1 (默认) |
| 停止流程 | <Alt> + 2 (默认) |
| 删除节点 | Delete |
| 撤销 | Ctrl + Z |
| 重做 | Ctrl + Y |
| 多选节点 | 按住鼠标左键拖拽框选 |
- 拖入一个 Start (开始) 节点。
- 拖入一个 Image (找图) 节点。
- 点击找图节点,在右侧属性面板点击 "📸 截取",框选屏幕上的目标。
- 将 Start 的
out端口连接到 Image 的in端口。 - 拖入一个 Mouse (鼠标) 节点,设置为点击操作,连接 Image 的
found端口。 - 点击顶部 "▶ 启动" 或按
Alt+1运行。
- tkinter:构建 GUI 界面。
- pyautogui: 实现鼠标和键盘的模拟控制。
- opencv-python (cv2): 提供强大的图像识别算法。
- pycaw / comtypes: 用于 Windows 系统下的音频会话捕捉。
- pynput: 用于监听全局快捷键。
本工具仅供学习和个人办公辅助使用。请勿用于开发违反游戏服务条款的脚本或恶意软件。作者不对使用本工具造成的任何后果负责。
MIT License
