You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Typer+Rich库的默认颜色?

修改Typer(0.9.0)+Rich(13.5.2) CLI的默认刺眼颜色

方法1:自定义Rich主题并传入Typer

Typer依赖Rich做终端渲染,你可以通过自定义Rich的Theme对象替换默认配色,初始化Typer时指定这个主题即可:

from typer import Typer
from rich.theme import Theme

# 自定义柔和主题,替换刺眼的默认色
custom_theme = Theme({
    "info": "dim cyan",
    "warning": "bold yellow",
    "error": "bold dark_red",
    "success": "bold dark_green",
    "prompt": "bold soft_blue",
    "prompt.default": "dim soft_blue"
})

app = Typer(rich_config={"theme": custom_theme})

@app.command()
def hello(name: str):
    app.echo(f"Hello {name}!")

if __name__ == "__main__":
    app()

你可以根据需求调整Theme里的键值对,覆盖Rich默认的样式名(比如error、prompt等),颜色支持Rich的命名色、十六进制色、RGB等格式,优先选soft_*系列低饱和度颜色。

方法2:全局修改Rich基础样式

如果想直接调整终端全局的前景/背景色,避免整体刺眼,用rich.reconfigure()方法:

from typer import Typer
from rich import reconfigure

# 设置柔和的全局背景与前景色
reconfigure(background="#f5f5f5", foreground="#333333")

app = Typer()

@app.command()
def test():
    app.echo("这是柔和配色下的普通输出")
    app.echo("这是柔和的错误提示", err=True)

if __name__ == "__main__":
    app()

方法3:针对特定输出单独指定样式

如果不需要全局替换,只想修改某部分内容的样式,用Rich的print方法替代Typer的echo,直接指定样式:

from typer import Typer
from rich import print

app = Typer()

@app.command()
def custom_output():
    print("[bold soft_blue]这是柔和的提示信息[/bold soft_blue]")
    print("[bold dark_red]这是不刺眼的错误信息[/bold dark_red]")

if __name__ == "__main__":
    app()

内容的提问来源于stack exchange,提问作者qazah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 01:38:12