pyautogui.locateOnScreen与position返回坐标不一致问题咨询
PyAutoGUI坐标不匹配问题排查
你的问题核心原因是Windows高DPI缩放导致的坐标偏移,旧版本PyAutoGUI(0.9.53)未自动适配系统缩放设置,当显示器启用缩放(比如200%)时,PyAutoGUI获取的屏幕坐标会是实际光标坐标的缩放倍数(你的案例里刚好是2倍),最终导致定位结果和实际位置不符,光标移到屏幕边缘。
解决办法有三种:
- 调整程序兼容性设置:右键Python.exe或脚本快捷方式→属性→兼容性→勾选“替代高DPI缩放行为”,下拉选“应用程序”,重启程序后坐标即可匹配。
- 手动修正坐标:获取定位结果后,按系统缩放比例(比如200%就除以2)修正数值,示例代码:
box = pyautogui.locateOnScreen(img_path) # 假设缩放比例为2,根据实际情况调整 scale = 2 corrected_left = box.left // scale corrected_top = box.top // scale pyautogui.moveTo(corrected_left + box.width//(2*scale), corrected_top + box.height//(2*scale)) - 升级PyAutoGUI版本:0.9.54及以上版本已修复高DPI适配问题,执行
pip install --upgrade pyautogui升级后即可正常使用。
内容的提问来源于stack exchange,提问作者Kenny Smith
相关产品推荐
相关产品推荐

