【发布时间】:2021-09-27 14:59:29
【问题描述】:
rich 项目允许指定控制台标记,包括文本颜色。然而,似乎任何颜色选择都需要硬编码,例如使用红色表示重要消息:
from rich import print
print('[red bold]This is a very important notification[/]')
这在具有浅色背景色(例如日光照射)的终端上看起来不错:
但是,当用户的背景颜色较深时,会使其难以阅读(例如 Solarized dark):
但是,作为使用rich 的命令行应用程序的开发人员,我不能为用户的终端假定任何背景颜色,因此硬编码特定颜色似乎不是一个好主意(我不想修改背景颜色,因为用户可能选择它是有充分理由的)。所以我想知道rich 是否提供背景感知颜色选择(例如通过主题,所以我可以指定类似category='important' 的东西)?
【问题讨论】:
-
只为该文本跨度使用指定的背景颜色是否有效?如何检测终端的背景颜色并在此基础上实现自己的逻辑?
-
@KarlKnechtel 两种解决方案都可以,但如果终端的背景颜色与 w.r.t 的对比度较低,我更愿意选择不同的文本颜色。红色的。你知道是否可以通过
rich(或其他可靠的方法)检测终端的背景颜色吗?