未能在pygame中的按钮上添加文本

时间:2018-07-12 01:46:42

标签: python button pygame

我想在按钮上添加文本,然后我在线上跟随了一个教程并按照指示编写了代码,但是,文本仍然无法成功显示在按钮上,这是我的代码:

    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)

我在顶部定义了text_objects:

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

它没有显示文本“静音”,而是在那里显示了黑色。谁能帮我解决这个问题?先感谢您。 enter image description here

2 个答案:

答案 0 :(得分:0)

我相信您没有指定要绘制字体的背景,因此它正在为您创建空白。那就是黑色的。您可能需要将代码修改为此:

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()

答案 1 :(得分:0)

我解决了这个问题。我应该将代码background.blit(textSurf, textRect)更改为screen.blit(textSurf, textRect)。进行此更改后,文本可以显示在按钮上,但是文本闪烁,为了解决此问题,我在此处添加了Clock函数以控制更新的频率。最后的代码在这里:

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)