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