Как сделать цветной текст в python?

Я хочу сделать цветной вывод текста в консоль python, но в большинстве модулей для этой задачи можно использовать только предустановленный список цветов. Можно ли самому выбрать цвет текста вводом цвета в формате RGB?


Ответы (2 шт):

Автор решения: Андрей Крузлик
def print_format_table():
    """
    печать таблицы форматирование текста
    """
    for style in range(8):
        for fg in range(30,38):
            s1 = ''
            for bg in range(40,48):
                format = ';'.join([str(style), str(fg), str(bg)])
                s1 += f'\x1b[{format}m {format} \x1b[0m'
            print(s1)
        print('\n')

print_format_table()
→ Ссылка
Автор решения: insolor

С помощью модуля rich можно указывать цвет в виде "rgb(255,255,255)", например:

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

Или в HEX формате:

console.print("Hello", style="#af00ff")

См. в документации Defining Styles.

Just for fun, выведем десять раз "Hello, World!", каждый символ случайным цветом:

from random import randint
from rich.console import Console
from rich.text import Text

text_to_print = "Hello, World!"

console = Console()
for _ in range(10):
    text = Text()

    for c in text_to_print:
        r = randint(0, 256)
        g = randint(0, 256)
        b = randint(0, 256)
        text.append(c, style=f"rgb({r},{g},{b})")

    console.print(text)

введите сюда описание изображения

На Linux и Mac должно без проблем работать, на Windows будет работать только в новом терминале (см. Compatibility):

Rich works with Linux, macOS and Windows. True color / emoji works with new Windows Terminal, classic terminal is limited to 16 colors.

Также в Defining Styles написано

Some terminals only support 256 colors. Rich will attempt to pick the closest color it can if your color isn’t available.

Т.е. если терминал не поддерживает больше чем 256 цветов, то rich будет пытаться подобрать ближайший похожий цвет из доступных.

→ Ссылка