PyAutoGUI的region参数失效,始终截取整个屏幕求助
解决MacOS下pyautogui region参数无效的问题
针对你的情况,MacOS上pyautogui的region参数失效通常和权限或版本有关,试试下面的方案:
1. 检查并授予屏幕录制权限
MacOS对屏幕截图有严格的权限控制,你需要给运行代码的应用(比如终端、VSCode等)开启屏幕录制权限:
- 打开「系统设置」→「隐私与安全性」→「屏幕录制」
- 在列表中找到你用来运行Python代码的应用,勾选它
- 重启该应用后再运行代码
2. 更新pyautogui到最新版本
旧版本的pyautogui在MacOS上可能存在区域截图的bug,执行以下命令更新:
pip install --upgrade pyautogui
3. 验证坐标范围是否正确
有时候region参数的坐标超出了屏幕范围,会导致截取整个屏幕。你可以先运行以下代码查看当前屏幕的分辨率和鼠标实时坐标,确保(20,20,500,500)是有效的区域:
import pyautogui print(pyautogui.size()) # 输出屏幕分辨率 pyautogui.displayMousePosition() # 实时显示鼠标坐标,按Ctrl+C退出
4. 替代方案:使用mss库
如果以上方法都无效,可以试试更轻量的mss库,它在MacOS上的区域截图支持更稳定:
- 先安装mss:
pip install mss
- 区域截图代码:
from mss import mss with mss() as sct: # region格式:left, top, width, height region = {'left': 20, 'top': 20, 'width': 500, 'height': 500} img = sct.grab(region) # 保存图片 mss.tools.to_png(img.rgb, img.size, output='screen.png')
内容的提问来源于stack exchange,提问作者amk13210
相关产品推荐
相关产品推荐

