打印 RGB 背景

printing with RGB background

我知道可以像这样打印 RGB 彩色文本:

def colored(r, g, b, text):
    return "3[38;2;{};{};{}m{} 3[39m".format(r, g, b, text)


text = "Hello, World"
colored_text = colored(132, 204, 247, text)
print(colored_text)

但是,有没有办法用 RGB 彩色背景打印?

因为,据我所知,有几种用于打印的内置背景色。但我希望能够使用 rgb 代码并为打印文本获得合适的背景颜色。

这可能吗?

谢谢。

我建议使用 Curses 模块,它可以帮助您在命令行上设置应用程序样式 运行。

Tech with Tim on YouTube 有一个教程。您会找到为文本和背景着色所需的所有内容。

这样做:

"\u001b[48;2;{};{};{}m{} \u001b[0m".format(r, g, b, text)

我找到了一个有用的资源:
https://www.lihaoyi.com/post/BuildyourownCommandLinewithANSIescapecodes.html#background-colors

根据 https://chrisyeh96.github.io/2020/03/28/terminal-colors.html#ansi-escape-codes-for-terminal-graphics Select Graphic Rendition 参数跟在 '3['Control Sequence Inducer) 用于定义背景色 是 48;2;r;g;b.

所以这里是 colored_background returns 文本参数 给定的背景颜色:

def colored_background(r, g, b, text):
    return f'3[48;2;{r};{g};{b}m{text}3[0m'

text = "What a nice red background!"
colored_text = colored_background(255, 0, 0, text)
print(colored_text)

你可以自然地将两者结合起来:

def colored(fg_color, bg_color, text):
    r, g, b = fg_color
    result = f'3[38;2;{r};{g};{b}m{text}'
    r, g, b = bg_color
    result = f'3[48;2;{r};{g};{b}m{result}3[0m'
    return result

text = "What a nice blue text with a red background!"
colored_text = colored((0, 0, 255), (255, 0, 0), text)
print(colored_text)

注意这里只需要一个参数为0的转义序列就可以了 一个将前景色和背景色都重置为它们的颜色 默认。