`pyautogui` 是一个跨平台的 Python 库,用于模拟鼠标移动、点击、键盘输入和屏幕截图等操作
📅 2026/7/15 23:56:01
👁️ 次浏览
pyautogui是一个跨平台的 Python 库用于模拟鼠标移动、点击、键盘输入和屏幕截图等操作常用于 Windows也支持 macOS 和 Linux桌面自动化任务如自动填写表单、批量操作 GUI 软件、UI 测试、RPA机器人流程自动化等。⚠️ 注意事项需要管理员权限或关闭 UAC用户账户控制才能在某些受保护窗口如系统设置、UAC 弹窗中操作屏幕分辨率、多显示器、缩放比例如 Windows 显示设置中 125% 缩放会影响坐标定位建议使用pyautogui.FAILSAFE True默认开启移动鼠标到左上角可中断并配合pyautogui.size()和pyautogui.position()进行调试图像识别pyautogui.locateOnScreen()依赖截图匹配需确保目标图像清晰、无动态变化如时间戳、闪烁图标推荐使用.png格式并启用confidence参数需安装opencv-python键盘操作需注意焦点窗口——pyautogui不自动激活窗口建议先用pyautogui.getWindowsWithTitle()win.activate()需配合pygetwindow库聚焦目标窗口。✅ 基础示例Windows 下打开记事本并输入文字importpyautoguiimporttime# 确保安全机制开启pyautogui.FAILSAFETrue# 打开开始菜单并搜索记事本pyautogui.press(win)time.sleep(1)pyautogui.write(notepad,interval0.1)pyautogui.press(enter)time.sleep(2)# 等待记事本启动# 输入文本pyautogui.write(Hello from PyAutoGUI!,interval0.05)pyautogui.press(enter)pyautogui.write(自动化成功,interval0.05) 安装命令pipinstallpyautogui opencv-python# opencv 支持图像匹配 confidence 提示生产环境建议结合pygetwindow窗口管理、pynput更底层监听或uiautomationWindows 原生 UIA 支持更稳定可靠弥补pyautogui的局限性如高 DPI 适配、无图像时的控件定位等。在 Windows 中启用高 DPI 缩放如 125%、150%时pyautogui默认获取的是逻辑像素DPI 缩放后坐标但底层 Windows API 返回的是物理像素真实屏幕分辨率而pyautogui的鼠标移动/点击函数如moveTo()、click()默认按物理像素操作导致坐标严重偏移通常表现为点击位置偏左上角偏移比例 ≈ 1/缩放比。✅根本原因Windows 启用 DPI 感知DPI-awareness后不同进程的 DPI 缩放行为不同。Python 进程默认为DPI-unaware系统会对其 UI 进行“虚拟化缩放”但pyautogui调用的底层GetCursorPos/SetCursorPos等 API 返回/接受的是物理屏幕坐标而pyautogui.size()和pyautogui.position()在 DPI-unaware 进程中返回的是缩放后的逻辑坐标造成不一致。✅解决方案推荐顺序✅ 方案 1设置 Python 进程为 DPI-aware最彻底推荐在脚本最开头import 任何库前添加以下代码使 Python 进程声明为系统 DPI 感知从而让pyautogui获取/使用统一的物理坐标体系importctypestry:ctypes.windll.shcore.SetProcessDpiAwareness(1)# Windows 8.1except(AttributeError,OSError):try:ctypes.windll.user32.SetProcessDPIAware()# Windows Vista~8except(AttributeError,OSError):passimportpyautoguiprint(Screen size:,pyautogui.size())# 此时返回真实物理分辨率如 1920×1080print(Mouse position:,pyautogui.position())# 物理坐标与 click/move 一致✅ 效果pyautogui.size()和pyautogui.position()返回值与鼠标实际物理位置完全匹配所有moveTo()/click()坐标无需换算消除偏移。⚠️ 注意需管理员权限运行某些旧版系统罕见且部分老旧 GUI 库可能因 DPI 感知异常渲染但pyautogui本身无 UI不受影响。✅ 方案 2手动校正缩放比例兼容性更强适合无法设 DPI-aware 的场景若因环境限制如冻结为 exe 后失效、权限受限无法设置 DPI-aware可动态获取当前缩放比例并校正坐标importwinregimportpyautoguidefget_dpi_scale():try:keywinreg.OpenKey(winreg.HKEY_CURRENT_USER,rControl Panel\Desktop\WindowMetrics)# 获取 AppliedDPI 值单位1/96 inch即 96100%120125%144150%dpi,_winreg.QueryValueEx(key,AppliedDPI)winreg.CloseKey(key)returndpi/96.0except:return1.0# 默认 100%scaleget_dpi_scale()print(fDPI scale:{scale:.2f})# 使用示例将设计时记录的逻辑坐标 (x_log, y_log) 转为物理坐标x_log,y_log100,200x_physint(x_log*scale)y_physint(y_log*scale)pyautogui.click(x_phys,y_phys)⚠️ 局限需提前知道目标元素的「逻辑坐标」如截图标注位置且多显示器缩放不一致时需额外处理。✅ 方案 3禁用程序 DPI 缩放仅开发调试用右键 Python.exe → 属性 → 兼容性 → 更改高 DPI 设置 → 勾选 ✅ “替代高 DPI 缩放行为” → 选择“应用程序”→ 此时 Python 进程强制以 100% 缩放运行pyautogui坐标自然对齐但界面可能模糊。 补充建议使用pyautogui.screenshot()截图时确保截图区域与物理分辨率一致DPI-aware 后自动正确避免混合使用pyautogui.locateOnScreen()依赖截图和未校准坐标——务必保证截图和定位在同一 DPI 模式下可结合pygetwindow获取窗口物理位置win pygetwindow.getWindowsWithTitle(xxx)[0]; x, y win.left, win.top已为物理坐标。✅ 总结方法是否推荐适用场景SetProcessDpiAwareness(1)✅ 强烈推荐大多数现代 WindowsWin 8.1自动化脚本手动 DPI 校正⚠️ 备选兼容性要求极高或受限环境禁用 DPI 缩放❌ 仅调试不推荐用于生产
SAP 移动平均成本(平均成本法)卡车全链路入库成本计算(含多层 BOM 原料 / 半成品 / 成品)先明确核心规则:移动平均价 库存总金额 库存总数量,每一笔入库、发票价差都会重新加权刷新单价;无 PP…
📅 2026/7/15 23:56:01
SAP 三种成本核算模式全流程(卡车多层 BOM:原材料→半成品→成品)前置统一基础设定1.BOM 层级结构成品:重型卡车(标准成本 300,000 / 台) 1 层半成品:车架总成、驾驶室 外购件:发动机…
📅 2026/7/15 23:56:01
1. 项目概述:为什么我们需要亲手搭建一个C线程池?如果你写过C并发程序,尤其是那种需要处理大量短期异步任务的服务器或者工具,大概率会遇到一个头疼的问题:频繁地创建和销毁线程。每次std::thread t(func);,…
📅 2026/7/15 23:55:00
Unity 高效的 IM(即时通讯)设计方案原理教程
概述
本教程基于一个使用 NGUI protobuf-net 构建的 Unity IM 聊天系统,深入分析其核心设计原理。该系统在 消息协议定义、组件复用、对象池、虚拟滚动 四个方面做到了高度优化,适合…
📅 2026/7/16 0:50:16
【Bug已解决】codex: "hooks not executing" / Pre/post hooks skipped — CodeX Hooks 不执行解决方案
1. 问题描述
CodeX CLI 配置的 hooks(钩子)未执行或被跳过:
# Hooks 不执行
$ cat .codex/config.json
{"hooks": …
📅 2026/7/16 0:50:16
【Bug已解决】codex: "network timeout" / Request timeout exceeded — CodeX 网络超时解决方案
1. 问题描述
CodeX CLI 在请求过程中遇到网络超时错误:
# 请求超时
$ codex "分析代码"
Error: Request timeout exceeded 30000ms# 或连接超时
…
📅 2026/7/16 0:50:16
【Bug已解决】codex: output garbled text / mojibake encoding error — CodeX CLI 输出编码乱码解决方案
1. 问题描述
CodeX CLI 的输出内容出现乱码、方块字、问号或不可读字符,无法正常显示中文或特殊符号:
# 中文输出变为乱码
$ codex "用中文…
📅 2026/7/16 0:50:16
昨天有个做电商的朋友问我,说现在满世界都在吹GEO,说不用SEO了,直接上AI搜索GEO应用就能躺赢。我听完直摇头,这哪是躺赢,这是把命交给算法赌博。咱们得把话说明白,GEO不是魔法,它是把传统的搜索引擎优化逻辑,强行塞进了大模型的胃口里。你喂给它什么,它就吐出什么,但…
📅 2026/7/16 0:49:47
面试
1.在sq|语句前面加上explain,然后执行
2.分析输出,关注type,key,rows,extra这几个参数
type常见的值有:ref >range > index>all。
refrange,index都表示用上了索引。
ref表示使用上了非唯一索…
📅 2026/7/16 0:49:16
1. 项目概述:为什么用遗传算法解5皇后问题,而不是直接回溯?我带过十几届算法课,也给不少初创团队做过AI架构咨询。每次讲到组合优化问题,学生和工程师的第一反应永远是“写个回溯试试”。这没错——55棋盘上找所有合法…
📅 2026/7/16 0:00:02
前几天调试一个简单的电源模块,用到了5.1V稳压管。电路接好,上电测试,万用表一量——输出居然只有4.7V。第一反应是稳压管坏了,换了一个新的,结果还是4.7V。这让我想起很多初学者都会遇到的困惑:明明标称5.…
📅 2026/7/16 0:00:02
1. 项目概述与核心价值 在高速数字系统、通信设备乃至精密测量仪器中,一个稳定、纯净且可精确调控的时钟信号,往往是整个系统稳定运行的“心跳”。无论是确保数据在光纤中无误传输,还是让ADC/DAC芯片精准采样,亦或是让多块FPGA板卡…
📅 2026/7/16 0:00:02
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/15 22:51:06
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/15 19:03:10
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/15 14:09:20
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/15 22:46:06
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/15 2:24:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/15 22:51:03