Pygame点击Credits按钮报错‘pygame.Surface’ object is not callable求助
报错原因
你代码的问题是局部变量覆盖了全局函数名:
- 在
MainMenu函数内,你用Credits作为变量名存储Menufont.render()的返回结果,这个返回值是pygame.Surface类型的对象,直接覆盖了全局定义的Credits()函数 - 点击Credits按钮执行
Credits()调用时,Python优先读取当前作用域下的Credits变量(Surface对象),把对象当作函数调用就会抛出'pygame.Surface' object is not callable错误
修复步骤
- 重命名
MainMenu函数内的Credits按钮变量,避免和函数名冲突:
把
Credits = Menufont.render("Credits", True, (3, 3, 116))
改为
Credits_btn = Menufont.render("Credits", True, (3, 3, 116))
同时把对应绘制按钮的代码改为:
screen.blit(Credits_btn, (863, 359))
- 修复
Credits()函数内的遗漏错误:pygame.display.update缺少调用括号,改为
pygame.display.update()
否则Credits页面不会正常刷新显示内容。
验证
修改完成后点击Credits按钮就可以正常触发Credits函数,不会再抛出类型错误。
内容的提问来源于stack exchange,提问作者IMC364
相关产品推荐
相关产品推荐

