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

Pygame开发游戏时标题界面按钮文字不显示该如何解决?

问题根因

核心问题是绘制顺序颠倒:先把文字渲染到屏幕上,紧接着又绘制了按钮矩形,不管是不是悬停状态,后绘制的矩形都会直接覆盖掉之前绘制的文字,所以看不到文字显示。
另外你只在初始化时执行了一次screen.fill(background_colour),没有放到主循环里每次重绘前清屏,后续画面刷新也容易出现残留异常。

修复后代码

import pygame

pygame.init()

background_colour = (33, 37, 49)
screen = pygame.display.set_mode((1000, 600))
pygame.display.set_caption('A Game')

game_font = pygame.font.Font('JetBrainsMono-Regular.ttf', 50)
game_name = game_font.render('a game', True, (255, 255, 255))
game_name = pygame.transform.scale2x(game_name)
game_name_rect = game_name.get_rect(center=(500, 300))

running = True
title_screen = True

while running:
    # 每次循环先清屏,避免画面残留
    screen.fill(background_colour)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    if title_screen:
        # 先绘制按钮底色,再绘制文字,保证文字在最上层
        if game_name_rect.collidepoint(pygame.mouse.get_pos()):
            pygame.draw.rect(screen, (58, 64, 80), game_name_rect)
        else:
            pygame.draw.rect(screen, (38, 44, 60), game_name_rect)
        # 矩形绘制完成后再渲染文字
        screen.blit(game_name, game_name_rect)

    pygame.display.update()

改动说明

  • 把清屏操作screen.fill(background_colour)移到主循环内部,每次刷新画面都先清空上一帧的内容
  • 调整标题屏内的绘制顺序:先根据鼠标悬停状态绘制对应颜色的按钮矩形,最后再渲染文字,确保文字始终显示在按钮上层
  • 简化了重复的碰撞判断逻辑,用if-else替代两次独立的if判断,避免冗余判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:06:05