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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:00:08