Pygame报错:pygame.Rect参数必须为rect风格对象问题求助
Pygame Rect 创建报错排查:TypeError: Argument must be rect style object
报错信息
File "main.py", line 103, in main bullet = pygame.Rect( TypeError: Argument must be rect style object
问题本质
pygame.Rect() 只接受特定格式的参数,也就是所谓的矩形样式对象,合法形式包括:
- 四个数值(整数/浮点数)组成的元组或列表:
(x坐标, y坐标, 宽度, 高度) - 另一个已创建的
pygame.Rect实例 - 两个对角点组成的序列:
((x1,y1), (x2,y2))
第103行代码排查方向
- 检查参数数量:有没有少传宽度、高度这两个值(比如只传了x、y坐标)
- 检查参数类型:是否不小心传入了字符串、
None或者非数值类型(比如某个计算坐标的变量未初始化,值为None) - 检查参数结构:是不是误传了单个数值、嵌套错误的列表/元组,而非符合要求的矩形参数格式
错误与正确示例
错误示例
# 错误:仅传入x、y,缺少宽高 bullet = pygame.Rect(player_x, player_y) # 错误:传入字符串类型的坐标值 bullet = pygame.Rect("150", "250", 10, 6) # 错误:传入未初始化的None值 bullet = pygame.Rect(None, 200, 10, 6)
正确示例
# 正确:直接传入四个数值 bullet = pygame.Rect(player_x, player_y, 8, 16) # 正确:传入包含四个数值的元组 bullet_params = (player_x, player_y, 8, 16) bullet = pygame.Rect(bullet_params)
内容的提问来源于stack exchange,提问作者David Akenji
相关产品推荐
相关产品推荐

