Как получить ширину текста с помощью Pygame

Я использую python с pygame и пытаюсь получить ширину текста. Документация pygame говорит, что используется pygame.font.Font.size(). Однако я не понимаю, что должна делать функция. Я продолжаю получать ошибки, говоря TypeError: descriptor 'size' requires a 'pygame.font.Font' object but received a 'str'.

мой код, который я использую, чтобы получить размер, и **** выглядит следующим образом

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

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

(оба дают ошибку)

Затем он близок к screen.****(text,[100,100])

В основном я пытаюсь создать функцию, которая может центрировать или обертывать текст и должна иметь возможность получить ширину.

2 ответа

Pygame docs говорят size(text) -> (width, height)

поэтому, как только вы создали свой объект шрифта, вы можете использовать size(text), чтобы увеличить размер текста в этом конкретном шрифте после его рендеринга

В вашем случае ваш объект шрифта self.font, поэтому для определения размера он будет делать это:

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

тогда вы можете использовать эти два целых числа, чтобы определить, что вам нужно поместить ваш визуализированный текст, прежде чем вы его визуализируете


Обработанный текст - это просто поверхность. Поэтому вы можете использовать что-то наподобие: surface.get_width() resp. surface.get_height().

Вот пример того, как текст близок в самом центре вашего дисплея; note: 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.****(my_text, (screen_width // 2 - text_width // 2, screen_height // 2 - text_height // 2)

licensed under cc by-sa 3.0 with attribution.