我正在制作一个数学东西,需要将数字绘制到屏幕上并右对齐。
我正在使用这个函数来绘制文本:
def drawText(text, font, text_col, x, y):
img = font.render(text, True, text_col)
screen.blit(img, (x, y))
如何绘制右对齐而不是左对齐的文本?
我尝试使用 Python 的
.rjust()
函数来实现此目的,但我没有使用等宽字体。
有没有可能使用
.rjust()
来右对齐或者其他什么?
pygame.Rect
对象具有一组虚拟属性,可用于定义表面和文本的位置。通过设置 midright
: 将文本向右对齐
self.textRect.midright = (x, y)
最小示例
import pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((500, 300))
clock = pygame.time.Clock()
font = pygame.font.SysFont(None, 32)
coins = 0
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
coins += 1
text_surf = font.render(str(coins), True, "black")
rect = screen.get_rect().inflate(-110, -110)
screen.fill("white")
pygame.draw.rect(screen, "red", screen.get_rect().inflate(-100, -100), 5)
screen.blit(text_surf, text_surf.get_rect(topleft = rect.topleft))
screen.blit(text_surf, text_surf.get_rect(midtop = rect.midtop))
screen.blit(text_surf, text_surf.get_rect(topright = rect.topright))
screen.blit(text_surf, text_surf.get_rect(midleft = rect.midleft))
screen.blit(text_surf, text_surf.get_rect(center = rect.center))
screen.blit(text_surf, text_surf.get_rect(midright = rect.midright))
screen.blit(text_surf, text_surf.get_rect(bottomleft = rect.bottomleft))
screen.blit(text_surf, text_surf.get_rect(midbottom = rect.midbottom))
screen.blit(text_surf, text_surf.get_rect(bottomright = rect.bottomright))
pygame.display.flip()
clock.tick(100)
pygame.quit()
exit()