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

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))
    

其他必须修复的隐藏问题

只改上述错误后代码仍无法正常运行,还需要补充以下修改:

  1. 代码开头缺少Pygame导入声明,在import random后添加一行import pygame
  2. 函数内部修改全局变量score和a需要先声明作用域,在main()函数第一行添加:
    global score, a
    
  3. 所有绘制操作完成后必须调用pygame.display.update()刷新屏幕,否则画面不会有任何变化
  4. 建议每次生成新点击目标前先填充背景色,避免之前的目标残留,填充代码为WIN.fill(BLACK)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:15:04