如何在 Pygame 中绘制右对齐的文本?

问题描述 投票:0回答:1

我正在制作一个数学东西,需要将数字绘制到屏幕上并右对齐。

我正在使用这个函数来绘制文本:

def drawText(text, font, text_col, x, y):
    img = font.render(text, True, text_col)
    screen.blit(img, (x, y))

如何绘制右对齐而不是左对齐的文本?

我尝试使用 Python 的

.rjust()
函数来实现此目的,但我没有使用等宽字体。

有没有可能使用

.rjust()
来右对齐或者其他什么?

python text pygame
1个回答
0
投票

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()
© www.soinside.com 2019 - 2024. All rights reserved.