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

Pygame subsurface矩形超出表面区域ValueError报错求助

报错原因与解决方法

报错原因

  • 子表面的矩形范围超出了原screen的边界:
    原screen的高度为HEIGHT,但你定义的子表面Rect参数是(0, HEIGHT/5+5, WIDTH, HEIGHT)。计算子表面的底部位置:HEIGHT/5+5 + HEIGHT = 1.2*HEIGHT +5,这个值远大于原screen的高度上限,触发了ValueError。

解决方法

调整子表面的高度,让其底部不超出原screen的范围。将子表面的高度改为HEIGHT - (HEIGHT/5 +5),这样子表面会从HEIGHT/5+5的y位置开始,一直延伸到原screen的底部。修改后的代码如下:

def screenshot():
    scrnsht_t = datetime.now().strftime("%y.%m.%d-%H:%M:%S")
    if not os.path.exists("screenshots"):
        os.makedirs("screenshots")
    # 修正子表面的高度计算
    subsurface_height = HEIGHT - (HEIGHT/5 + 5)
    screenshot_zone = screen.subsurface(pg.Rect(0, HEIGHT/5+5, WIDTH, subsurface_height))
    pg.image.save(screenshot_zone, f"screenshots\{scrnsht_t}.png")

如果希望避免浮点数坐标可能带来的问题,也可以用整数除法调整起始y坐标和高度:

screenshot_zone = screen.subsurface(pg.Rect(0, HEIGHT//5+5, WIDTH, HEIGHT - (HEIGHT//5+5)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:37:08