star set_alpha functions python fonts width pygame

python - set_alpha - pygame star



Cómo obtener el ancho del texto usando Pygame (2)

Estoy usando python con pygame y tratando de obtener el ancho del texto. La documentación de pygame dice que se debe usar pygame.font.Font.size() . Sin embargo, no entiendo qué se supone que debe tomar la función. Sigo recibiendo errores diciendo TypeError: descriptor ''size'' requires a ''pygame.font.Font'' object but received a ''str''.

mi código que estoy usando para obtener el tamaño y blit se ve así

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

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

(ambos dan un error)

Luego se borra con screen.blit(text,[100,100])

Básicamente, estoy tratando de crear una función que pueda centrar o ajustar el texto y necesite poder obtener el ancho.


Un texto renderizado es solo una superficie. Por lo tanto, puede usar algo como: surface.get_width () resp. surface.get_height ().

Aquí un ejemplo de tener un texto borrado en el centro de su pantalla; Nota: screen_width y screen_height son ancho y alto de la pantalla. Supongo que los conoces.

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)


los Pygame dicen size(text) -> (width, height)

así que una vez que haya creado su objeto de fuente, puede usar el size(text) para determinar qué tan grande va a ser ese texto en esa fuente en particular una vez que se haya renderizado

En su caso, su objeto de fuente es self.font , por lo que para determinar el tamaño, lo hará:

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

luego puedes usar esos dos enteros para determinar dónde necesitas colocar el texto renderizado antes de que realmente lo renderices