如何获得 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)
见
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)
见