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

如何编写Pygame单行文本渲染函数?解决TypeError问题

问题原因与修复方案

你遇到的TypeError: argument 1 must be pygame.Surface, not None错误,根源在于write_text函数没有返回值——你在函数里调用了font.render生成文本Surface,但没有用return把这个Surface返回出来,函数默认会返回None,而screen.blit要求第一个参数必须是有效的pygame.Surface对象,所以报错了。

下面提供两种符合你需求的修复方式:

方式一:让函数返回渲染好的Surface

修改write_text函数,添加return语句返回渲染后的Surface,这样可以继续用screen.blit调用:

def write_text(text, anti_alias, colour):
    return font.render(text, anti_alias, colour)

原调用代码不需要修改,依然可以正常运行。

方式二:函数直接完成渲染+绘制(更贴合“一行操作”需求)

把screen.blit的逻辑整合到函数里,调用时直接传入位置参数,一行代码完成所有操作:

# 修改后的函数,新增pos参数接收绘制位置
def write_text(text, anti_alias, colour, pos):
    text_surface = font.render(text, anti_alias, colour)
    screen.blit(text_surface, pos)

# 游戏循环里直接调用这一行即可,不需要再写screen.blit
write_text('haloooo', False, (200, 200, 200), (100, 300))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:57:19