如何解决有没有办法将下面的文本居中放置在框内?
我使用 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)
注意,blit
的 dest 参数也可以是一个矩形。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。