You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pyscreenshot的bbox参数时Python触发ValueError错误求助

问题

我想实现点击鼠标时保存全屏截图,然后提取鼠标位置处的文本(截图已能保存到文件夹),但运行代码时出现以下错误:

运行代码

im = pyscreenshot.grab(bbox=(on_click.px, on_click.py, on_click.rx, on_click.ry))
im.save('img.png')

错误回溯

Traceback (most recent call last):
  File "c:\Users\cww\Downloads\Typeracer Bot\typeracerbot.py", line 21, in <module>
    im = pyscreenshot.grab(bbox=(on_click.px, on_click.py, on_click.rx, on_click.ry))
  File "C:\Users\cww\AppData\Local\Programs\Python\Python310\lib\site-packages\pyscreenshot\__init__.py", line 27, in grab
    raise ValueError("bbox x2<=x1")
ValueError: bbox x2<=x1
解决方法

错误原因

pyscreenshot.grab()的bbox参数要求传入**(左上角x, 左上角y, 右下角x, 右下角y)**,且必须满足右下角x > 左上角x、右下角y > 左上角y。你遇到的错误是因为on_click.rx(右下角x)小于等于on_click.px(左上角x),不符合参数格式要求。

针对全屏截图的修复

既然需求是截全屏,完全不需要传bbox参数,默认调用就会截取整个屏幕:

im = pyscreenshot.grab()  # 无需bbox,直接截全屏
im.save('img.png')

鼠标位置文本提取建议

如果要提取鼠标位置的文本,可先获取鼠标坐标,再从全屏截图中裁剪出鼠标周围的区域,最后用OCR工具提取文本,示例代码:

import pyautogui
import pyscreenshot
from PIL import Image
import pytesseract

# 截全屏
im = pyscreenshot.grab()
im.save('full_screen.png')

# 获取当前鼠标坐标
mouse_x, mouse_y = pyautogui.position()

# 裁剪鼠标周围区域(可根据需求调整尺寸)
crop_area = (mouse_x - 100, mouse_y - 50, mouse_x + 100, mouse_y + 50)
cropped_im = im.crop(crop_area)
cropped_im.save('mouse_area.png')

# OCR提取文本
text = pytesseract.image_to_string(cropped_im)
print(text)

内容的提问来源于stack exchange,提问作者iis3zT5iK3mGyJw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:36:23