首页 > 其他分享 >Styles¶

Styles¶

时间:2023-09-13 12:00:09浏览次数:34  
标签:Styles style console 样式 Style print 文本

风格

在 Rich API 的不同位置,您可以设置一个“样式”来定义文本的颜色和各种属性,例如粗体、斜体等。样式可以作为包含样式定义的字符串或类的实例给出。

定义样式

样式定义是包含一个或多个用于设置颜色和属性的单词的字符串。

要指定前景色,请使用 256 种标准色之一。例如,要以洋红色打印“Hello”:

console.print("Hello", style="magenta")

您也可以将颜色的数字(0 到 255 之间的整数)与语法一起使用。以下内容将给出等效的输出:"color(<number>)"

console.print("Hello", style="color(5)")

或者,您可以使用类似 CSS 的语法来指定带有“#”后跟三对十六进制字符的颜色,或者以 RGB 形式指定三个十进制整数的颜色。以下两行都以相同的颜色(紫色)打印“Hello”:

console.print("Hello", style="#af00ff")
console.print("Hello", style="rgb(175,0,255)")

十六进制和 rgb 形式允许您从 16 万种颜色的完整真彩色集合中进行选择。

注意

某些终端仅支持 256 种颜色。如果您的颜色不可用,Rich 将尝试选择最接近的颜色。

颜色本身将更改前景色。要指定背景色,请在颜色前面加上单词“on”。例如,以下内容在白色背景上以红色打印文本:

console.print("DANGER!", style="red on white")

您还可以使用单词设置颜色,该单词会将颜色重置为由终端软件管理的默认值。这也适用于背景,因此样式是终端开始的样式。"default""default on default"

您可以通过添加以下一个或多个单词来设置样式属性:

  • "bold"或粗体文本。"b"

  • "blink"对于闪烁的文本(请谨慎使用)。

  • "blink2"对于快速闪烁的文本(大多数终端不支持)。

  • "conceal"对于隐藏文本(大多数终端不支持)。

  • "italic"或斜体文本(在 Windows 上不受支持)。"i"

  • "reverse"或前景色和背景色颠倒的文本。"r"

  • "strike"或带有一行的文本。"s"

  • "underline"或带下划线的文本。"u"

Rich 还支持以下样式,这些样式不太受支持,可能不会显示在您的终端中:

  • "underline2"或双下划线文本。"uu"

  • "frame"对于框架文本。

  • "encircle"对于带圈子的文本。

  • "overline"或带上划线的文本。"o"

样式属性和颜色可以相互组合使用。例如:

console.print("Danger, Will Robinson!", style="blink bold red underline on white")

可以通过在属性前面加上单词“not”来否定样式。这可用于关闭样式(如果它们重叠)。例如:

console.print("foo [not bold]bar[/not bold] baz", style="bold")

这将以粗体打印“foo”和“baz”,但“bar”将以普通文本打印。

样式也可能具有一个属性,该属性会将任何样式文本转换为超链接(如果您的终端软件支持)。"link"

若要添加指向样式的链接,定义应包含单词后跟 URL。以下示例将创建一个可单击的链接:"link"

console.print("Google", style="link https://google.com")

注意

如果您熟悉 HTML,您可能会发现以这种方式应用链接有点奇怪,但终端认为链接是另一个属性,就像粗体、斜体等一样。

样式类

最终,将解析样式定义并创建类的实例。如果您愿意,可以使用 Style 类代替样式定义。下面是一个示例:

from rich.style import Style
danger_style = Style(color="red", blink=True, bold=True)
console.print("Danger, Will Robinson!", style=danger_style)

像这样构造 Style 类会稍微快一些,因为样式定义需要一点时间来解析 - 但仅在第一次调用时,因为 Rich 将缓存解析的样式定义。

可以通过将样式相加来组合样式,如果要修改现有样式的属性,这将非常有用。下面是一个示例:

from rich.console import Console
from rich.style import Style
console = Console()

base_style = Style.parse("cyan")
console.print("Hello, World", style = base_style + Style(underline=True))

可以使用该方法显式分析样式定义,该方法接受样式定义并返回 Style 实例。例如,以下两行是等效的:

style = Style(color="magenta", bgcolor="yellow", italic=True)
style = Style.parse("italic magenta on yellow")

样式主题

如果您重复使用样式,如果要修改属性或颜色,则可能会使维护问题头疼 - 您必须更改使用该样式的每一行。Rich 提供了一个类,可用于定义可按名称引用的自定义样式。这样,您只需在一个地方更新样式。

样式主题可以使你的代码更具语义性,例如,一种名为 Better 的样式表达了意图。"warning""italic magenta underline"

若要使用样式主题,请构造一个实例并将其传递给构造函数。下面是一个示例:

from rich.console import Console
from rich.theme import Theme
custom_theme = Theme({
    "info": "dim cyan",
    "warning": "magenta",
    "danger": "bold red"
})
console = Console(theme=custom_theme)
console.print("This is information", style="info")
console.print("[warning]The pod bay doors are locked[/warning]")
console.print("Something terrible happened!", style="danger")

注意

样式名称必须为小写,以字母开头,并且只能包含字母或字符 、、。".""-""_"

自定义默认值

主题类将继承 Rich 内置的默认样式。如果您的自定义主题包含现有样式的名称,它将替换它。这使您可以像创建自己的样式一样轻松地自定义默认值。例如,您可以通过以下方式更改 Rich 突出显示数字的方式:

from rich.console import Console
from rich.theme import Theme
console = Console(theme=Theme({"repr.number": "bold green blink"}))
console.print("The total is 128")

可以通过设置构造函数来禁用继承默认主题。inherit=False

若要查看默认主题,请运行以下命令:

python -m rich.theme
python -m rich.default_styles

加载主题

如果你愿意,你可以在外部配置文件中编写样式,而不是在 Python 中。下面是格式的示例:

[styles]
info = dim cyan
warning = magenta
danger = bold red

您可以使用该方法读取这些文件。

标签:Styles,style,console,样式,Style,print,文本
From: https://www.cnblogs.com/full-stack-linux-new/p/17699232.html

相关文章

  • Stable Diffusion WebUI插件:StyleSelectorXL 之七十七种绘画风格任君选择
    本文给大家分享一个应用于SDXL的新插件:StyleSelectorXL。通过在UI界面上简单的选择,我们就可以生成多种多样的风格图片,如动漫、水彩、平面、3D、线稿、涂鸦、剪纸、朋克、童话等等。基本介绍用过SDXL的同学,应该能切身感受到其出图质量相比之前的SD1.5、2.x等版本都有了......
  • Saving your Plot: Stylesheets and Layouts (STY, LAY, LPK)
    DescriptionWedescribetheusesanddifferencesbetweenTecplot360’sthreedifferentmethodsforsavingthestyleandsettingsofyourplot.Theseincludestylesheets(STYfiles)linkeddatalayouts(LAYfiles)andpackageddatalayouts(LPKfiles).The......
  • Delphi12支持全屏显示启动界面的styles.xml
    <resourcesxmlns:android="http://schemas.android.com/apk/res/android"><stylename="AppTheme"parent="@android:style/Theme.Material.Light.NoActionBar"><itemname="android:navigationBarColor&qu......
  • SAP Spartacus 开源项目中 $skipComponentStyles 的作用介绍
    SAPSpartacus和Angular开发的前端应用中的$skipComponentStyles是用于跳过组件样式加载的一个标志。在理解$skipComponentStyles的作用之前,我们先来了解一下SAPSpartacus。SAPSpartacus是一个开源的电子商务前端框架,用于构建可扩展、可定制的电子商务网站。它基于An......
  • EndNote参考文献格式Output Styles界面介绍
      本文对EndNote软件修改论文参考文献引用格式的界面与各选项参数加以详细介绍。  利用EndNote软件进行论文参考文献的插入可以说是非常方便;但其亦具有一个问题,就是对中文文献的支持不太友好;之前也用过NoteExpress,这一国产软件对于中文参考文献的支持性很好,但是由于论文较多,......
  • 获取html中styles内容
    publicclassgetStyle{publicstaticvoidmain(String[]args)throwsFileNotFoundException{try{getStyle.handler();}catch(IOExceptione){thrownewRuntimeException(e);}catch(UnsupportedFlavo......
  • 运行项目报错Cannot read property 'styles' of undefined
    原因是安装依赖版本不对,以下是我的解决办法:1、先删除项目中package-lock.json文件及node_modules文件(可使用rimraf指令删除node_modules,直接删文件很慢)2、执行npmi--legacy-peer-deps  指令,会发现自动帮我们生成了package-lock.json及node_modules,这个命令是用来安装......
  • Styles 样式
    InlineStyles 内联样式<ButtonMargin="0,0,2,2"Grid.Row="0"Grid.Column="0"Name="cell00"><Button.Style><Style>......
  • Geoserver中预览图层时放大到某一层级不显示(样式Styles中未设置对应比例尺的样式)
    场景GeoServer简介、下载、配置启动、发布shapefile全流程(图文实践):https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/109636080geoserver在预览图层时,当发......
  • ALV demo 05:cl_salv_table(Apply Styles to Cell)
    QQ群:SAP干货铺, 群号:775662808所有群管理严格,严格禁止一切外来链接、招聘、广告等垃圾信息!效果:carrid列的第二行设置为热键,CONNID第三行设置为buttoncode:*&---------......