Pygame调用font.SysFont报错:'pygame.font.Font'对象无'SysFont'属性
解决Pygame中
AttributeError: 'pygame.font.Font' object has no attribute 'SysFont'的问题 问题根源
你遇到的错误是典型的命名冲突:
- 你用
from pygame import *导入了所有pygame模块,其中font原本指向pygame.font模块。 - 但当你执行
font = font.SysFont("candara", 35)时,你把font这个变量名覆盖成了一个pygame.font.Font对象。 - 之后再调用
font.SysFont("arial", 25)时,Python会尝试在这个Font对象上找SysFont方法,而Font对象根本没有这个方法,所以触发了AttributeError。
解决方案
这里有几种简单的修复方式,任选其一即可:
1. 重命名字体变量,避免覆盖模块名
把第一个字体变量改成别的名字,比如font_candara,这样font仍然指向pygame.font模块:
# 替换原来的错误代码 font_candara = font.SysFont("candara", 35) font2 = font.SysFont("arial", 25)
2. 使用完整模块路径调用SysFont
放弃from pygame import *的导入方式,改用显式导入,彻底避免命名冲突:
# 替换原来的导入代码 import pygame import os os.environ['SDL_VIDEO_WINDOW_POS'] = "%d, %d" %(0, 0) pygame.init() # 创建字体时使用完整路径 font = pygame.font.SysFont("candara", 35) font2 = pygame.font.SysFont("arial", 25)
3. 额外修复:按钮函数的缩进问题
你的button4函数代码存在缩进错误,Python靠缩进区分代码块,正确写法如下:
def button4(X): draw.rect(X,PINK,(50,70,200,50)) buttonText = font2.render("Home Country",False,(0,0,0)) screen.blit(buttonText,(55,80))
验证修复
完成上述修改后重新运行程序,就能正常创建两种字体并显示文本了。
内容的提问来源于stack exchange,提问作者M.Arora
相关产品推荐
相关产品推荐

