如何消除Rich中Panel标题与边框间的多余空格?
解决Rich Panel标题与边框间多余空格的问题
要消除Rich的Panel标题文本(自带前后空格)与边框之间的默认额外间距,同时保留标题本身的空格,可通过以下两种方式实现:
方法1:自定义Box样式
Rich的Panel边框与标题的间距由box样式控制,默认样式会在标题两侧自动添加空格。你可以自定义Box类,移除标题区域的额外间距:
from rich.box import Box from rich.panel import Panel # 自定义Box,让标题直接衔接边框 NO_PADDING_BOX = Box( top="─", bottom="─", left="│", right="│", top_left="┌", top_right="┐", bottom_left="└", bottom_right="┘", # 关键:取消标题位置的默认空格填充 top_middle="", top_left_title="┌", top_right_title="┐", ) # 使用自定义Box创建Panel,保留标题自带的前后空格 panel = Panel("Wordle猜词内容", title=" My Title ", box=NO_PADDING_BOX)
设置后,标题自带的空格会直接紧贴Panel边框,不会产生额外间距。
方法2:手动组合标题与内容
若觉得自定义Box繁琐,可放弃Panel的title参数,手动构建标题与内容的组合,完全控制间距:
from rich.text import Text from rich.panel import Panel from rich.align import Align # 构建带空格的标题,直接衔接边框字符 title_text = Text("┌ My Title ┐", style="bold cyan") content = Text("Wordle猜词程序运行内容", style="white") # 组合标题、内容与底部边框 full_content = Align.center("\n".join([title_text.plain, content.plain, "└────────────┘"])) # 无默认边框的Panel,仅展示手动构建的内容 panel = Panel(full_content, box=None)
这种方式完全由你掌控标题与边框的距离,适配Colab上的Wordle猜词程序场景。
内容的提问来源于stack exchange,提问作者RussAbbott
相关产品推荐
相关产品推荐

