Pygame运行blit方法报TypeError:需pygame.Surface但传入tuple如何修复
问题排查与解决
错误根因
你遇到的报错已经明确指向问题所在:
line 26, in main WIN.blit(WHITE, (x, y)) TypeError: argument 1 must be pygame.Surface, not tuple
pygame.Surface.blit()是Pygame中用于将一个图像Surface绘制到另一个Surface上的方法,第一个入参必须是Surface类型对象。而你代码中传入的WHITE是(255,255,255)的RGB颜色元组,完全不符合参数要求,因此触发类型错误。
修复方案
根据你的开发需求二选一即可:
- 如果你是想在对应坐标绘制白色色块,不要使用
blit方法,改用Pygame的矩形绘制接口:# 第四个参数是(宽,高),可根据需求调整 pygame.draw.rect(WIN, WHITE, (x, y, 20, 20)) - 如果你本来是想绘制已经加载好的黑点游戏素材
thing,直接替换blit的第一个参数即可:WIN.blit(thing, (x, y))
其他必须修复的隐藏问题
只改上述错误后代码仍无法正常运行,还需要补充以下修改:
- 代码开头缺少Pygame导入声明,在
import random后添加一行import pygame - 函数内部修改全局变量
score和a需要先声明作用域,在main()函数第一行添加:global score, a - 所有绘制操作完成后必须调用
pygame.display.update()刷新屏幕,否则画面不会有任何变化 - 建议每次生成新点击目标前先填充背景色,避免之前的目标残留,填充代码为
WIN.fill(BLACK)
内容的提问来源于stack exchange,提问作者Davon Mike
相关产品推荐
相关产品推荐

