Что я пытаюсь сделать?

Я использую библиотеку rich для печати слов разными цветами.

Для этого я придумал следующую программу:

from rich import print as rprint

rprint('[[green]1[/green]] Create new password')
print('[2] See existing passwords')
print('[3] Exit')

Выход:

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

Моя проблема

Как вы можете видеть на изображении выше, квадратные скобки, окружающие 1, имеют более яркий цвет по сравнению с скобками под ним 2 & 3. Есть ли способ сделать квадратные скобки одинакового цвета (серого) вместо белого?

Заранее спасибо.

Примечание.

Я понимаю, что это не мешает работе программы, но мне нравится, чтобы все было эстетично, и это меня почему-то действительно беспокоит.

Кроме того, я просто тестировал, как можно изменить цвета с помощью rich, но я открыт для предложений по другим способам сделать это.

3
some_user_3 2 Мар 2021 в 15:15

2 ответа

Лучший ответ

Rich выполняет выделение вывода для чисел, строк, данных и т. Д. В вашем примере это выделение фигурных скобок, что может быть полезно при печати структур данных.

Вы можете отключить эту функцию, если создадите объект Console и установите highlight=False в методе печати.

Вот пример:

from rich.console import Console
console = Console()
console.print('[[green]1[/green]] Create new password', highlight=False)

Подробнее см. В документации по выделению.

1
Will McGugan 2 Мар 2021 в 13:47

Поскольку операция открыта для других способов, вот мой способ сделать ...

Инициируйте класс с помощью стандартных цветовых кодов терминала.

class bcolors:

    ResetAll = "\033[0m"

    Bold       = "\033[1m"
    Dim        = "\033[2m"
    Underlined = "\033[4m"
    Blink      = "\033[5m"
    Reverse    = "\033[7m"
    Hidden     = "\033[8m"

    ResetBold       = "\033[21m"
    ResetDim        = "\033[22m"
    ResetUnderlined = "\033[24m"
    ResetBlink      = "\033[25m"
    ResetReverse    = "\033[27m"
    ResetHidden     = "\033[28m"

    Default      = "\033[39m"
    Black        = "\033[30m"
    Red          = "\033[31m"
    Green        = "\033[32m"
    Yellow       = "\033[33m"
    Blue         = "\033[34m"
    Magenta      = "\033[35m"
    Cyan         = "\033[36m"
    LightGray    = "\033[37m"
    DarkGray     = "\033[90m"
    LightRed     = "\033[91m"
    LightGreen   = "\033[92m"
    LightYellow  = "\033[93m"
    LightBlue    = "\033[94m"
    LightMagenta = "\033[95m"
    LightCyan    = "\033[96m"
    White        = "\033[97m"

    BackgroundDefault      = "\033[49m"
    BackgroundBlack        = "\033[40m"
    BackgroundRed          = "\033[41m"
    BackgroundGreen        = "\033[42m"
    BackgroundYellow       = "\033[43m"
    BackgroundBlue         = "\033[44m"
    BackgroundMagenta      = "\033[45m"
    BackgroundCyan         = "\033[46m"
    BackgroundLightGray    = "\033[47m"
    BackgroundDarkGray     = "\033[100m"
    BackgroundLightRed     = "\033[101m"
    BackgroundLightGreen   = "\033[102m"
    BackgroundLightYellow  = "\033[103m"
    BackgroundLightBlue    = "\033[104m"
    BackgroundLightMagenta = "\033[105m"
    BackgroundLightCyan    = "\033[106m"
    BackgroundWhite        = "\033[107m"

Ваша программа

print(f"[{bcolors.Green}1{bcolors.ResetAll}] Create new password")
print('[2] See existing passwords')
print('[3] Exit')

Вывод:

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

1
Pluviophile 2 Мар 2021 в 12:45