如何使用Pygame获取文本的宽度

时间:2014-08-05 23:22:55

标签: python fonts width pygame

我在pygame中使用python并尝试获取文本的宽度。 pygame文档说使用pygame.font.Font.size()。但是,我不明白该功能应该采取什么。我一直在说错误 TypeError: descriptor 'size' requires a 'pygame.font.Font' object but received a 'str'.

我的代码我用来获得大小和blit看起来像这样

text=self.font.render(str(x[0]), True, black)
size=pygame.font.Font.size(str(x[0]))

size=pygame.font.Font.size(text))

(两者都有错误)

然后发牢骚 screen.blit(text,[100,100])

基本上我试图创建一个可以居中或包装文本的功能,并且需要能够获得宽度。

2 个答案:

答案 0 :(得分:8)

Pygame文档说size(text) -> (width, height)

因此,一旦您创建了自己的字体对象,就可以使用size(text)来确定该文本在呈现后的特定字体大小

在您的情况下,您的字体对象为self.font,因此要确定其大小,请执行以下操作:

text_width, text_height = self.font.size("txt") #txt being whatever str you're rendering

然后您可以使用这两个整数来确定在实际呈现之前是否需要放置渲染文本

答案 1 :(得分:7)

渲染文字只是一个表面。因此,您可以使用:surface.get_width()resp。 surface.get_height()。

这是一个在显示屏正中央插入文字的例子;注意:screen_width和screen_height是显示的宽度和高度。我认为你了解他们。

my_text = my_font.render("STRING", 1, (0, 0, 0))
text_width = my_text.get_width()
text_height = my_text.get_height()

screen.blit(my_text, (screen_width // 2 - text_width // 2, screen_height // 2 - text_height // 2)