有没有办法让下面的文本在框内居中?

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

我使用 Python 和 Pygame 在 Pi 上显示天气 我有 2 个盒子,我试图在其中显示风速和风向 这是我的代码

    pg.draw.rect(screen, (255,255,255), (643, 67, 85, 30), 2)  # draw windspeed box 
if skyData.status == sky.STATUS_OK: 
    ren = font.render("{}°C".format(skyData.tempnow), 1, pg.Color('black'), pg.Color(134,174,230))
else:
    ren = font.render("", 1, pg.Color('black'), pg.Color(185,208,240))
screen.blit(ren, (658*HRES//1600, 84*VRES//900-ren.get_height()//2))


pg.draw.rect(screen, (255,255,255), (872, 67, 116, 30), 2)  # draw wind direction box cardinal + Degrees
if forecastData.status == forecast.STATUS_OK:
    ren = font.render("{} {}°".format(forecastData.wind_direction_cardinal, forecastData.wind_direction), 1, pg.Color('black'), pg.Color(134,174,230))
else:
    ren = font.render("", 1, pg.Color('black'), pg.Color(134,174,230))
screen.blit(ren, (882*HRES//1600, 84*VRES//900-ren.get_height()//2)) 

效果很漂亮,但文本从未居中 如果风速低于 10 英里/小时,则文本位于右侧,如果方向为 N,而不是 NW 或 NNW,则文本位于左侧

我希望文本在指定的框中居中 这可能吗?

这就是它们目前的样子,如果方向变为 S,则文本完全位于左侧 Box image

python text pygame center box
1个回答
0
投票

使用get_rect

获取文本
Surface的边界矩形,并将矩形的中心设置为框的中心。使用矩形来
blit
文本:

box = pygame.Rect(643, 67, 85, 30), 2)
pg.draw.rect(screen, (255,255,255), box , 2)  # draw windspeed box 

if skyData.status == sky.STATUS_OK: 
    ren = font.render("{}°C".format(skyData.tempnow), 1, pg.Color('black'), pg.Color(134,174,230))
else:
    ren = font.render("", 1, pg.Color('black'), pg.Color(185,208,240))

ren_rect = ren.get_rect(center = box.center)
screen.blit(ren, ren_rect)

注意,blit

dest参数也可以是一个矩形。

© www.soinside.com 2019 - 2024. All rights reserved.