在pygam中的按钮上添加文本失败

2024-04-26 06:14:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在我的按钮上添加一个文本,我按照在线教程编写了代码,但是文本仍然没有成功显示在按钮上,下面是我的代码:

    ButtonText = pygame.font.SysFont("freesansbold.ttf", 10)
    textSurf, textRect = text_objects("Mute", ButtonText)
    textRect.center = ((20+(50/2)), (20+(20/2)))
    background.blit(textSurf, textRect)

我在顶部定义了文本对象:

def text_objects(text, font):
    black = (0,0,0)
    textSurface = font.render(text, True, black)
    return textSurface, textSurface.get_rect()

而不是显示文字“静音”,它显示了大量的黑色那里。有人能帮我修一下吗?先谢谢你。enter image description here


Tags: 代码text文本objectsttf按钮pygameblack
2条回答

我解决了这个问题。我应该将代码background.blit(textSurf, textRect)更改为screen.blit(textSurf, textRect)。经过这个修改后,文本可以显示在按钮上,但是文本是闪烁的,为了解决这个问题,我在那里增加了一个时钟功能来控制更新的频率。最后的代码如下:

ButtonText = pygame.font.Font("freesansbold.ttf", 10)
    textSurf, textRect = text_objects("Mute", ButtonText)
    textRect.center = ((20+(50/2)), (20+(20/2)) )

    screen.blit(textSurf, textRect)     
    pygame.display.flip()
    clock = pygame.time.Clock()
    clock.tick(15)

我相信你没有指定字体的背景,所以它是为你创建一个空白的。也就是说是黑色的。您可能需要将代码修改为:

def text_objects(text, font):
    black = (0,0,0)
    white = (255,255,255)
    surf = pygame.Surface(font.size(text))
    surf.fill(white)
    textSurface = font.render(text, True, black, surf)
    return textSurface, textSurface.get_rect()

相关问题 更多 >