Как изменить цвет программы в python

Cross-platform colored terminal text.

Отслеживать
ответ дан 5 фев 2014 в 16:42
Ilya Pirogov Ilya Pirogov
10.9k 1 1 золотой знак 20 20 серебряных знаков 29 29 бронзовых знаков

Используются ANSCII escape symbols, некоторые из них отвечают за цвета. В большинстве терминалов Linux они поддерживаются. Можно просто погуглить на эту тему и не обязательно скачивать colorama, хотя, наверняка, это упростит работу.

Просто проверьте и всё.

import sys import time import random string = «123456789n» def color(text): sys.stdout.write(u»x1B[mx1B[0m».format (random.choice(range(31,36)+ range(90,97)),i)) sys.stdout.flush() time.sleep(random.random()/6) for i in string: color(i)
Отслеживать
ответ дан 26 фев 2014 в 16:37
219 1 1 серебряный знак 3 3 бронзовых знака
from termcolor import colored print(colored(‘Hello World!’, ‘green’)
Отслеживать

51.9k 11 11 золотых знаков 107 107 серебряных знаков 309 309 бронзовых знаков
ответ дан 13 дек 2017 в 4:58
Shihkauskas Shihkauskas
104 7 7 бронзовых знаков

Создание программы «Изменение цвета окна» в Python.

Чтобы не вводить руками ANSI коды для цветов и смены текущей позиции, blessings пакет может быть использован:

from blessings import Terminal # $ pip install blessings import colorama # $ pip install colorama colorama.init() # replace ANSI escapes with Win32 calls in stdout/stderr t = Terminal() with t.location(0, t.height — 1): # at the bottom of the terminal print(t.green(‘Hello World’))

Источник: ru.stackoverflow.com

Цветной вывод текста в Python

Python обладает достаточным количеством инструментов, чтобы выводить текст в консоль в любом цвете. Такой вывод не требует особых навыков, реализуется в несколько строк кода и используется как для выделения важной информации, так и для придания красоты тексту.

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

C помощью встроенных средств языка

В Python можно форматировать текст с помощью ANSI кодов. Это очень мощный и удобный инструмент, с его помощью программист может напрямую определять цвет текста.

ANSI коды работают на большинстве дистрибутивов Linux, но не поддерживаются консолью операционной системы Windows до Windows 10. В статье есть отдельный пункт про то, как запускать на Windows!

На разных дистрибутивах Linux и в Windows 10 цвет текста, созданный при помощи одного и того же ANSI кода, может отличаться. Это зависит от настроек консоли, её кастомизации пользователем и некоторых других факторов.

Читайте также:
Ошибка при подключении к прослойке убедитесь что программа запущена и нажмите ок

Смена цвета текста и фона в python (питон) | Модуль colorama python

Изменять цвет текста с помощью ANSI кодов можно разными способами, например, использоваться функции или даже написать свой класс-обёртку для ANSI.

Использовать ANSI коды просто, для этого нужно знать базовый синтаксис и сами коды. Разбор на примере кода «33[31m33[43m»:

  • /033 — обозначение того, что дальше идет какой-то управляющий цветом код;
  • [31m — цвет текста (красный);
  • [43m — цвет фона (жёлтый).

После вывода этого в консоль, далее выводимая информация будет красного цвета на жёлтом фоне. Сбросить к начальным значениям : 33[0m .

Базовые коды:

  • 33[0-7m — это различные эффекты, такие как подчеркивание, мигание, жирность и так далее;
  • 33[30-37m — коды, определяющие цвет текста (черный, красный, зелёный, жёлтый, синий, фиолетовый, сине-голубой, серый);
  • 33[40-47m — коды, определяющие цвет фона.

Цвета

Цвет Текст Фон
Чёрный 30 40
Красный 31 41
Зелёный 32 42
Жёлтый 33 43
Синий 34 44
Фиолетовый 35 45
Бирюзовый 36 46
Белый 37 47

Эффекты

Код Значение
Сброс к начальным значениям
1 Жирный
2 Блёклый
3 Курсив
4 Подчёркнутый
5 Редкое мигание
6 Частое мигание
7 Смена цвета фона с цветом текста

Функции для вызова

Быстро покрасить строку в нужный цвет можно с помощью функций. Им нужно дать говорящие имена, передать в качестве аргумента строку и использовать в их теле правильный ANSI код.

Подход удобен тем, что можно объявить N функций, которые форматируют любой текст в нужный цвет и использовать их во всех своих программах, достаточно лишь импортировать модуль.

def out_red(text): print(«33[31m <>» .format(text)) def out_yellow(text): print(«33[33m <>» .format(text)) def out_blue(text): print(«33[34m <>» .format(text)) out_red(«Вывод красным цветом») out_yellow(«Текст жёлтого цвета») out_blue(«Синий текст»)

Разукрашиваем вывод в консоли: теория и практика

Консоль привлекает многих своей минималистичностью и эстетикой, но даже в ней иногда хочется выделить определённый фрагмент, чтобы показать его роль или значимость. Например, отметить зелёным текстом сообщение об успешном выполнении операции или обозначить длинный текст ошибки курсивом. О том, как это делать, а также о реализации на питоне — читайте далее.

Управляющие последовательности ANSI

ANSI escape sequences или Управляющие последовательности ANSI — это стандарт, дающий возможность управлять курсором, цветами, начертание в текстовых консолях. Такие последовательности воспринимаются отрисовщиком терминала, как команды отображать последующий текст в определенном формате. Есть также последовательность, которая сбрасывает предыдущие команды, и отображение текста становиться обычным. Существует несколько форматов управляющих последовательностей, различающихся возможностями и появившимися в разных версиях кодировок. Поговорим об этих форматах подробнее.

Читайте также:
Имеет открытый исходный код но открытость кода не подразумевает бесплатное распространение программы

8 основных цветов и стили

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

Чтобы изменить текущий цвет шрифта или фона можно использовать следущий синтаксис:

  • Начинается управляющая последовательность с любого из этих трёх представлений: x1b[ (hex) или u001b[ (Unicode) или 33[ (oct)
  • Далее следуют аргументы, разделённые между собой ; (можно указывать в любом порядке)
  • В конце ставится буква m

Возможные аргументы

Модификатор Код
1 Жирный
2 Блеклый
3 Курсив
4 Подчёркнутый
5 Мигание
9 Зачёркнутый
Цвет Код
30 Чёрный
31 Красный
32 Зелёный
33 Жёлтый
34 Синий
35 Фиолетовый
36 Бирюзовый
37 Белый
Цвет Код
40 Чёрный
41 Красный
42 Зелёный
43 Жёлтый
44 Синий
45 Фиолетовый
46 Бирюзовый
47 Белый

Бонус: другие интересные модификаторы, которые могут поддерживаться не всеми платформами

Модификатор Код
38 RGB цвет (см. раздел «Совсем много цветов»)
21 Двойное подчёркивание
51 Обрамлённый
52 Окружённый
53 Надчёркнутый

Пример корректного синтаксиса: 33[3;36;44m . После вывода этой конструкции стиль будет изменён для всего последующего текста. Чтобы вернуться к изначальному состоянию можно использовать 33[0m , тогда весь текст с этого места вернётся к изначальному форматированию.

Давайте поэкспементируем. Для примеров я буду использовать Python.

Важно заметить, что форматирование повлияло и на консоль питона, а не только на ее вывод. Именно поэтому очень важно закрывать все «тэги» изменения форматирования.

Часто используемые сочетания (copy-paste-able)

Код Описание
33[0m вернуться к начальному стилю
33[31m 33[0m красный текст — для обозначения ошибок
33[1;31m 33[0m жирный красный текст — для обозначения критических ошибок
33[32m 33[0m зеленый текст — успешное выполнение
33[3;31m 33[0m красный курсив — текст ошибки
33[43m 33[0m выделение основного, как будто жёлтым маркером

Больше цветов: аж целых 256

Некоторые терминалы поддерживают вывод целых 256 цветов. Если команда echo $TERM выводит xterm-256color , то ваш терминал всё корректно обработает.

В этом формате синтаксис немного другой:

Для генерации кодов цветов можно использовать генератор.

А палитру доступных цветов можно увидеть на картинке ниже.

Палитра цветов

Совсем много цветов

Этот формат не всегда поддерживается стандартными консолями.

Некотрые будут негодовать: «256 цветов и нет моего любимого терракотового, какой ужас!». Для таких ценителей существует формат, который уже поддерживает 24 битные цвета (3 канала RGB по 256 градаций).
Для не ценителей поясню, что терракотовый кодируется как — (201, 100, 59) или #c9643b.
Синтаксис в этом формате выглядит вот так:

  • 33[38;2;⟨r⟩;⟨g⟩;⟨b⟩m — цвет текста
  • 33[48;2;⟨r⟩;⟨g⟩;⟨b⟩m — цвет фона
Читайте также:
Программа чтобы сделать образ диска

Python: Использование библиотеки Colorama

Библиотека Colorama позволяет форматировать текст, не запоминая коды цветов. Рассмотрим её использование на примере:

from colorama import init, Fore, Back, Style init() print(Fore.RED + ‘some red textn’ + Back.YELLOW + ‘and with a yellow background’) print(Style.DIM + ‘and in dim textn’ + Style.RESET_ALL + ‘back to normal now’)

Style позволяет изменить стиль, Fore — цвет шрифта, Back — цвет фона. Использовать переменные из colorama нужно также, как и коды изменения стиля. Но плюс использования библиотеки в том, что Fore.RED более читаем, чем 33[0;31m

Если в colorama.init() указать параметр autoreset=True , то стиль будет автоматически сбрасываться (в конец каждого print будут добавлены сбрасывающие стили последовательности), поэтому вам не придётся об этом каждый раз вспоминать.

А что не так с Windows?

Просто так синтаксис, описанный в начале статьи, не работает в командной строке Windows. Поддержка цветов появлялась постепенно, причём в странном варианте. В начале программы надо сделать системный вызов, активирующий отрисовку цветов. А в более старых версиях необходимо заменить все ANSI последовательности на системные вызовы.

Но colorama.init() сделает всё за вас в большинстве версий Windows. Однако если вы используете другую операционную систему, то функцию init() вызывать в начале программы не обязательно. Также некоторые IDE на Windows (например, PyCharm) тоже поддерживают цвета без каких-либо махинаций.
А еще Windows не поддерживает многие модификаторы, такие как жирный текст. Подробнее можно почитать на странице Colorama

Termcolor

Ещё одна библиотека для вывода цветного текста с более удачным, на мой взлгяд, синтаксисом.

from termcolor import colored, cprint text = colored(‘Hello, Habr!’, ‘red’, attrs=[‘blink’]) print(text) cprint(‘Hello, Habr!’, ‘green’, ‘on_red’)

Кстати, проблему с Windows всё ещё можно починить с помощью colorama.init()

Выводы

Стандартные 8 цветов позволяют разнообразить вывод в консоль и расставить акценты. 256 цветов намного расширяют возможности, хотя и поддерживаются не всеми консолями. Windows, к сожалению, не поддерживает многие основные модификаторы, например, курсив. Также есть некоторые цвета, которые не прописаны в стандартах, но могут поддерживаться вашей операционной системой. Если вы хотите больше цветов, то вы можете поискать их в Гугле.
Пока что не любой терминал поддерживает 24-битные цвета и все модификаторы, но мы вряд ли увидим сильные изменения в этой сфере. Так что пока нам остаётся выбирать самые красивые варианты из тех, что доступны в любимом терминале.

Источники

  • Картинки с синтаксисом из статьи
  • Генератор из статьи на Хабре
  • ANSI escape code

Облачные серверы от Маклауд быстрые и безопасные.

Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!

Источник: habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru