微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法将下面的文本居中放置在框内?

如何解决有没有办法将下面的文本居中放置在框内?

我使用 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("",pg.Color(185,208,240))
screen.blit(ren,(658*HRES//1600,84*VRES//900-ren.get_height()//2))


pg.draw.rect(screen,(872,116,2)  # draw wind direction Box cardinal + degrees
if forecastData.status == forecast.STATUS_OK:
    ren = font.render("{} {}°".format(forecastData.wind_direction_cardinal,forecastData.wind_direction),230))
screen.blit(ren,(882*HRES//1600,84*VRES//900-ren.get_height()//2)) 

效果很好,但文本永远不会居中 如果风速低于 10mph,则文本在右侧,如果方向是 N 而不是 NW 或 NNW,则文本在左侧

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

这是他们现在的样子,如果方向变成 S 则文字完全向左 Box image

解决方法

使用 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("",pg.Color(185,208,240))

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

注意,blitdest 参数也可以是一个矩形。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。