表格¶
里奇百货公司 Table
类提供了将表格数据呈现给终端的各种方法。
若要呈现表,请构造一个 Table
对象,则使用 add_column()
,和行与 add_row()
--然后打印到控制台。
以下是一个示例:
from rich.console import Console
from rich.table import Table
table = Table(title="Star Wars Movies")
table.add_column("Released", justify="right", style="cyan", no_wrap=True)
table.add_column("Title", style="magenta")
table.add_column("Box Office", justify="right", style="green")
table.add_row("Dec 20, 2019", "Star Wars: The Rise of Skywalker", "$952,110,690")
table.add_row("May 25, 2018", "Solo: A Star Wars Story", "$393,151,347")
table.add_row("Dec 15, 2017", "Star Wars Ep. V111: The Last Jedi", "$1,332,539,889")
table.add_row("Dec 16, 2016", "Rogue One: A Star Wars Story", "$1,332,439,889")
console = Console()
console.print(table)
这将产生以下输出:
Star Wars Movies ┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓ ┃ Released ┃ Title ┃ Box Office ┃ ┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩ │ Dec 20, 2019 │ Star Wars: The Rise of Skywalker │ $952,110,690 │ │ May 25, 2018 │ Solo: A Star Wars Story │ $393,151,347 │ │ Dec 15, 2017 │ Star Wars Ep. V111: The Last Jedi │ $1,332,539,889 │ │ Dec 16, 2016 │ Rogue One: A Star Wars Story │ $1,332,439,889 │ └──────────────┴───────────────────────────────────┴────────────────┘
Rich将计算适合您的内容的最佳列大小,如果终端不够宽,则会根据内容对文本进行换行。
备注
您并不局限于在 add_row
方法。您可以添加Rich知道如何呈现的任何内容(包括另一个表)。
表选项¶
表构造函数上有许多关键字参数,可以用来定义表的外观。
title
设置表格的标题(表格上方显示的文本)。caption
设置表格标题(显示在表格下方的文本)。width
设置所需的表格宽度(禁用自动宽度计算)。min_width
设置表格的最小宽度。box
设置其中一个 盒 表格网格的样式,或None
因为没有网格。safe_box
设置为True
强制表生成ASCII字符而不是Unicode。padding
用于设置单元格填充的整数或1、2或4值的元组(请参见 填充物 )。collapse_padding
如果为True,则将合并相邻单元格的填充。pad_edge
设置为False可删除表格边缘周围的填充。expand
设置为True可将表扩展到完全可用大小。show_header
设置为True可显示标题,设置为False可禁用标题。show_footer
设置为True将显示页脚,设置为False将禁用页脚。show_edge
设置为False可禁用桌子周围的边线。show_lines
设置为True可显示行之间的线条以及页眉/页脚。leading
行之间的额外空格。style
应用于整个表格的样式,例如“在蓝色上”row_styles
设置为样式列表以设置交替行的样式。例如:["dim", ""]
创造 zebra stripesheader_style
设置页眉的默认样式。footer_style
设置页脚的默认样式。border_style
设置边框字符的样式。title_style
设置标题的样式。caption_style
设置标题的样式。title_justify
设置标题对齐方式(“左”、“右”、“中”或“全”)caption_justify
设置字幕对齐方式(“左”、“右”、“中”或“全”)highlight
设置为True可启用单元格内容的自动突出显示。
边框样式¶
您可以通过导入其中一个预设来设置边框样式 Box
对象,并设置 box
表构造函数中的参数。下面是一个修改《星球大战》表格外观的例子:
from rich import box
table = Table(title="Star Wars Movies", box=box.MINIMAL_DOUBLE_HEAD)
看见 盒 用于其他方框样式。
您还可以设置 box=None
若要完全删除边框,请执行以下操作。
这个 Table
类提供了许多配置选项来设置表格的外观,包括如何呈现边框以及列的样式和对齐方式。
线条¶
默认情况下,表格将仅在标题下显示一行。如果要显示所有行之间的线条,请添加 show_lines=True
传递给构造函数。
还可以通过设置在下一行上强制行 end_section=True
在呼叫到 add_row()
,或通过调用 add_section()
若要在当前行和后续行之间添加一行,请执行以下操作。
空表¶
打印不含列的表格会产生空行。如果要动态生成表,并且数据源没有列,则可能需要打印一些不同的内容。以下是您可以这样做的方法::
if table.columns:
print(table)
else:
print("[i]No data...[/i]")
添加列¶
属性的位置参数中指定列也可以添加列 Table
构造函数。例如,我们可以构建一个包含三列的表:
table = Table("Released", "Title", "Box Office", title="Star Wars Movies")
这允许您仅指定列的文本。如果要设置其他属性,如宽度和样式,可以添加一个 Column
班级。以下是一个示例:
from rich.table import Column, Table
table = Table(
"Released",
"Title",
Column(header="Box Office", justify="right"),
title="Star Wars Movies"
)
列选项¶
您可以在列上设置多个选项来修改其外观。
header_style
设置页眉的样式,例如“粗体洋红色”。footer_style
设置页脚的样式。style
设置应用于列的样式。例如,您可以通过将背景设置为“开绿色”来突出显示一列。justify
将文本对齐设置为“Left”、“Center”、“Right”或“Full”之一。vertical
将列中单元格的垂直对齐设置为“上”、“中”或“下”之一。width
将行宽显式设置为给定的字符数(禁用自动计算)。min_width
设置为整数时,将防止列收缩到此值以下。max_width
设置为整数时,将防止列增长超过此值。ratio
定义用于设置列宽的比率。例如,如果有3列,总比率为6,则ratio=2
则该列将是可用大小的三分之一。no_wrap
设置为True可防止此列换行。
垂直对齐¶
属性可以定义列的垂直对齐方式 vertical
列的参数。也可以对每个单元格执行此操作,方法是将文本换行或使用 Align
班级:
table.add_row(Align("Title", vertical="middle"))
网格¶
Table类也可以作为一个很好的布局工具。如果禁用页眉和边框,则可以使用它在终端中定位内容。替代构造函数 grid()
可以为您创建这样一张表。
例如,以下代码在一行中显示与端子左右边缘对齐的两段文本:
from rich import print
from rich.table import Table
grid = Table.grid(expand=True)
grid.add_column()
grid.add_column(justify="right")
grid.add_row("Raising shields", "[bold magenta]COMPLETED [green]:heavy_check_mark:")
print(grid)