如何修改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
相关产品推荐
相关产品推荐

