Pygame调用win.fill()报错被识别为Rect对象,如何解决?
解决Pygame中win.fill()报错ValueError: invalid rectstyle object的问题
嘿,这个问题我之前踩过坑!其实就是参数传递的格式不对,咱们快速搞定它:
问题原因
你调用win.fill(255, 255, 255)时,把白色的RGB三个分量拆成了三个独立参数传入,但Pygame的fill()方法要求第一个参数必须是一个包含RGB值的元组(或列表)。后面的参数原本是可选的填充区域(Rect对象)和特殊标记,所以Python会把后面两个255当成Rect的参数,这完全不符合Rect的格式规范,自然就抛出了invalid rectstyle object的错误。
修正后的代码
只需要把三个RGB值打包成一个元组传进去就可以了,修改后的完整代码如下:
import pygame import random pygame.init() win = pygame.display.set_mode((650, 650)) x = random.randint(100, 600) y = random.randint(100, 400) # 修正:将RGB值封装为元组,告诉Pygame这是颜色参数 win.fill((255, 255, 255))
额外小优化
如果想让代码更易读,还可以直接使用Pygame内置的颜色常量,比如pygame.Color('white'),效果是一样的:
win.fill(pygame.Color('white'))
内容的提问来源于stack exchange,提问作者user13651239
相关产品推荐
相关产品推荐

