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
相关产品推荐
相关产品推荐

