富文本

里奇有一个 Text 类的新实例,此类可用于标记具有颜色和样式属性的字符串。您可以在接受字符串的任何地方使用Text实例,这使您可以很好地控制表示。

您可以将这个类看作是一个带有标记文本区域的字符串。不同于内置的 str ,文本实例是可变的,并且大多数方法就地操作,而不是返回新实例。

将样式添加到文本的一种方法是 stylize() 方法,该方法将样式应用于起始和结束偏移量。以下是一个示例:

from rich.console import Console
from rich.text import Text

console = Console()
text = Text("Hello, World!")
text.stylize("bold magenta", 0, 6)
console.print(text)

这将打印“Hello,World!”到航站楼,第一个字用洋红色粗体。

或者,也可以通过调用 append() 若要在文本末尾添加字符串和样式,请执行以下操作。以下是一个示例:

text = Text()
text.append("Hello", style="bold magenta")
text.append(" World!")
console.print(text)

如果要使用已使用ANSI代码格式化的文本,请调用 from_ansi() 要将其转换为 Text 对象::

text = Text.from_ansi("\033[1;35mHello\033[0m, World!")
console.print(text.spans)

由于从部件构建文本实例是一种常见需求,Rich提供了 assemble() 它将组合字符串或字符串和样式对,并返回一个文本实例。以下示例等同于上面的ANSI示例:

text = Text.assemble(("Hello", "bold magenta"), ", World!")
console.print(text)

您可以使用以下命令将样式应用于文本中的给定单词 highlight_words() 或进行终极控制呼叫 highlight_regex() 要突出显示与 regular expression

文本属性

Text类具有许多参数,您可以在构造函数上设置这些参数来修改文本的显示方式。

  • justify 应为“Left”、“Center”、“Right”或“Full”,并将覆盖默认的对齐行为。

  • overflow 应为“折叠”、“裁剪”或“省略号”,并将覆盖默认溢出。

  • no_wrap 如果文本长度超过可用宽度,则阻止换行。

  • tab_size 设置制表符中的字符数。

在Rich API中,几乎所有地方都可以使用Text实例来代替普通字符串,这让您可以很好地控制文本在其他Rich Renderable中的呈现方式。例如,下面的示例右对齐 Panel **

from rich import print
from rich.panel import Panel
from rich.text import Text
panel = Panel(Text("Hello", justify="right"))
print(panel)