如何获得 pygame 中的文本宽度?

How to get text width in pygame?

if score == 10:
  myFont = pygame.font.SysFont("times new roman ", 35)
  white = (255,255,255)
  text2 = ("You win! Congrats!")
  label2 = myFont.render(text2, 1, white)
  text_width = text2.get_width()
  screen.blit(label2, (text2_width, height/2))
  pygame.display.update()
  time.sleep(3)
  game_over = True
  break

我想在 pygame 屏幕中间显示此文本,但我无法获取文本的宽度。 Python 给出错误“'string' 对象没有属性 'get_width'”。有没有人有另一种方法来做到这一点?我还需要身高的长度,所以如果你也包括如何获得它那就太好了。

pygaem.font.SysFont.render() returns a pygame.Surface object. You can get the width of the Surface with get_width():

label2 = myFont.render(text2, 1, white)
text_width = label2.get_width()

如果想知道提前渲染文字需要多少space,可以使用pygaem.font.SysFont.size():

text_width, text_height = myFont.size(text2)

但是,如果要将文字放在屏幕中央,则需要获取文字的外接矩形,并将矩形的中心设置在window的中心。
使用矩形 blit 文本:

label2 = myFont.render(text2, 1, white)

screen_rect = screen.get_rect()
text_rect = label2.get_rect(center = screen_rect.center)

screen.blit(label2, text_rect)