鱼C论坛

 找回密码
 立即注册
查看: 48|回复: 1

[已解决]pygame导入系统字体后无法显示文字

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import pygame
import random
pygame.init()
screen = pygame.display.set_mode([800, 600])
pygame.display.set_caption("test1")
font = pygame.font.SysFont("微软雅黑", 24)
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
posx = 50
posy = 50
xvel = 3
yvel = 3
keep_going = True
times = 0
clock = pygame.time.Clock()
while keep_going:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            keep_going = False
    print_text = f"the hit times -- {times}"
    text = font.render(print_text, True, WHITE)
    text_rect = text.get_rect()
    text_rect.centerx = screen.get_rect().centerx
    text_rect.y = 50
    screen.blit(text, text_rect)
    posx += xvel
    posy += yvel
    if posx <= 50 or posx >= 750:
        xvel = -xvel
        times += 1
    if posy <= 50 or posy >= 550:
        yvel = -yvel
        times += 1
    screen.fill(BLACK)
    pygame.draw.circle(screen, RED, (posx, posy), 50)
    pygame.display.update()
    clock.tick(60)
pygame.quit()

运行后屏幕上方没有显示文字,请求帮助
最佳答案
5 天前
以下是你代码中可能导致文字无法显示的问题以及解决方案:

1. **更新屏幕顺序错误:**
   你在更新屏幕内容(`pygame.display.update()`)之前调用了`screen.fill(BLACK)`,这会覆盖之前绘制的文字。因此,你需要先清屏,再绘制文字和其他元素,然后更新显示。

2. **`if`条件错误:**
   条件判断中的`=`应该是`==`。使用单个`=`进行赋值会导致语法错误。应当用`==`来进行条件判断。

修改后的代码如下:
import pygame
import random
pygame.init()
screen = pygame.display.set_mode((800, 600))  # 指定窗口大小
pygame.display.set_caption("test1")
font = pygame.font.SysFont("微软雅黑", 24)
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
posx = 50
posy = 50
xvel = 3
yvel = 3
keep_going = True
times = 0
clock = pygame.time.Clock()
while keep_going:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            keep_going = False

    # 先填充背景色
    screen.fill(BLACK)

    # 更新文字
    print_text = f"the hit times -- {times}"
    text = font.render(print_text, True, WHITE)
    text_rect = text.get_rect()
    text_rect.centerx = screen.get_rect().centerx
    text_rect.y = 50
    screen.blit(text, text_rect)

    # 更新圆的信息
    posx += xvel
    posy += yvel
    if posx == 750 or posx == 0:  # 使用==进行比较
        xvel = -xvel
        times += 1
    if posy == 550 or posy == 0:  # 使用==进行比较
        yvel = -yvel
        times += 1

    # 绘制圆
    pygame.draw.circle(screen, RED, (posx, posy), 50)
    
    # 更新显示内容
    pygame.display.update()
    clock.tick(60)
pygame.quit()

希望对你有所帮助!如果还有其他问题,请随时问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 5 天前 | 显示全部楼层    本楼为最佳答案   
以下是你代码中可能导致文字无法显示的问题以及解决方案:

1. **更新屏幕顺序错误:**
   你在更新屏幕内容(`pygame.display.update()`)之前调用了`screen.fill(BLACK)`,这会覆盖之前绘制的文字。因此,你需要先清屏,再绘制文字和其他元素,然后更新显示。

2. **`if`条件错误:**
   条件判断中的`=`应该是`==`。使用单个`=`进行赋值会导致语法错误。应当用`==`来进行条件判断。

修改后的代码如下:
import pygame
import random
pygame.init()
screen = pygame.display.set_mode((800, 600))  # 指定窗口大小
pygame.display.set_caption("test1")
font = pygame.font.SysFont("微软雅黑", 24)
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
posx = 50
posy = 50
xvel = 3
yvel = 3
keep_going = True
times = 0
clock = pygame.time.Clock()
while keep_going:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            keep_going = False

    # 先填充背景色
    screen.fill(BLACK)

    # 更新文字
    print_text = f"the hit times -- {times}"
    text = font.render(print_text, True, WHITE)
    text_rect = text.get_rect()
    text_rect.centerx = screen.get_rect().centerx
    text_rect.y = 50
    screen.blit(text, text_rect)

    # 更新圆的信息
    posx += xvel
    posy += yvel
    if posx == 750 or posx == 0:  # 使用==进行比较
        xvel = -xvel
        times += 1
    if posy == 550 or posy == 0:  # 使用==进行比较
        yvel = -yvel
        times += 1

    # 绘制圆
    pygame.draw.circle(screen, RED, (posx, posy), 50)
    
    # 更新显示内容
    pygame.display.update()
    clock.tick(60)
pygame.quit()

希望对你有所帮助!如果还有其他问题,请随时问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-2 20:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表