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

是否可以将带有居中文本的此框的内部设置为不同的颜色?

如何解决是否可以将带有居中文本的此框的内部设置为不同的颜色?

我真的是 Python 新手,我的 Pi 4 有一个显示器,它使用 Pygame 作为显示器。我有一个带有居中文本的框,如果可能的话,我希望框的内部背景为不同的颜色 我希望盒子的背景是 RGB (141,180,235) 主要显示的是BACKGROUND_COLOR = pg.Color(42,117,198),这就是这个盒子里面的东西。

这可能吗?

 Box = pg.Rect(645,75,30)
pg.draw.rect(screen,(255,255,),Box,1)  # draw windspeed Box           
if skyData.status == sky.STATUS_OK: 
    ren = font.render("Wind Direction {}°".format(forecastData.angle),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)  
pg.draw.line(screen,(644,74),(825,74)) #shade Box
pg.draw.line(screen,104))  #shade Box

这是一个带有 CENTERED TEXT 的 Box,因此仅更改文本的背景颜色将不起作用 如果只有这一种,就会发生这种情况 - 颜色不同以显示变化

enter image description here

解决方法

render() 的第四个参数是背景颜色。如果要绘制具有不同背景的框,只需使用不同的背景颜色。如果你跳过背景参数,背景是透明的。
使用 pygame.draw.rect 绘制具有特定颜色的矩形。以透明背景为中心绘制文本:

text = ""
if skyData.status == sky.STATUS_OK: 
    text = "Wind Direction {}°".format(forecastData.angle)
ren = font.render(text,1,pg.Color('black'))

box = pg.Rect(645,75,180,30)
pg.draw.rect(screen,(141,235),box)
pg.draw.rect(screen,(255,255,),box,1)

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

pg.draw.line(screen,pg.Color('black'),(644,74),(825,74)) #shade box
pg.draw.line(screen,104))  #shade box

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