Как сделать цветной питон

Добавил пользователь Валентин П.
Обновлено: 19.09.2024

Цвета – это неотъемлемая часть любого приложения, которое запускается на компьютере. С их помощью можно не только сделать интерфейс приятным на глаз, но и обеспечить нужную функциональность приложению. Например, текст определенного цвета может сообщать пользователю о том, можно ли ему совершать какое-то действие или нет.

Продвинутая работа с цветами

Самый простой способ задать цвет – это использовать параметры foreground и background , а потом указать через оператор присваивания соответствующий текст словом. Например, можно ввести цвет white, blue, yellow . Это, конечно, хорошо, но такой подход не очень гибкий. Что, если надо указать не синий цвет, а сиреневый? Или не красный, а фиолетовый.

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

Приведем скриншот программы, которое демонстрирует возможности изменения цветов в Tkinter.

Tkinter. Работа с цветами и шрифтами

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

В качестве демонстрации примеров для настроек тех или иных виджетов мы будем использовать кнопки. При этом мы будем использовать диалоговое окно askcolor из модуля tkinter.colorchooser для того, чтобы пользователь мог выбрать тот цвет, который ему нравится.

Сам код приложения выглядит следующим образом.

Обратите внимание на блок import и модули, которые необходимо импортировать в программу перед тем, как работать с цветами. Это очень важно.

Если требуется проанализировать RGB-значение цвета, который был выбран, то его записать непосредственно в консоль после того, как пользователь подтвердит свой выбор.

Если же пользователь откажется выбирать цвет, то тогда в консоли не появится никаких значений.

Как выполняется настройка цвета в Python?

Все кнопки в нашем примере применяют функцию partial() для обратного вызова. Этот инструмент можно найти в модуле functools , с помощью которого можно создать новый вызываемый объект. В целом, он ведет себя точно так же, как и оригинальная функция, но есть несколько фиксаций по аргументам. Давайте приведем такую строку кода в качестве примера.

Действия, выполняемые предыдущей командой, такие же, как и последующей.

Это необходимо сделать для того, чтобы переиспользовать метод set_color(), находящийся в модуле functools.

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

Необходимо только помнить о нюансе: foreground и background в сокращенном виде записываются, как fg и bg . Распаковка этих строк осуществляется с использованием ** во время настройки виджета.

Функция askcolor() после того, как будет выполнена, передает переменной кортеж с двумя элементами. В первый входит набор цветов RGB, а во втором – представление этого цвета в шестнадцатеричном формате. Так, как невозможно первый аргумент передать в параметры, то для этого используется второй.

Если необходимо конвертировать цветовое представление в шестнадцатеричный формат, для этого используется метод winfo_rgb ().

Как задать цвет шрифта в элементе окна Tkinter?

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

Tkinter. Работа с цветами и шрифтами

Приведем пример приложения, которое предоставляет возможность пользователю динамически изменять тип, размер шрифта.

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

Обратите внимание! Переменные в библиотеке Tkinter могут содержать некоторые значения, привязанные к каждому полю, установленные по умолчанию.

Принцип работы настройки шрифтов

Разберем описанный выше код. Кортеж FAMILIES содержит три разновидности шрифтов, поддержка которых имеется на всех платформах – Times New Roman, Courier, Helvetica. Чтобы выбирать подходящий, используется виджет OptionMenu , взаимосвязанный с переменной self.family.

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

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

С подробным перечнем всех шрифтов, которые можно использовать в программах, можно ознакомиться с помощью метода families() , который расположен в модуле tkinter.font .

Так, как изначально необходимо сгенерировать root , можно также прописать такой код, чтобы реализовать эту задачу.

Ошибки не будет появляться, если человек попробует использовать шрифт, не соответствующий списку. Он просто подберет какой-то шрифт, напоминающий тот, который был указан.

В целом, что-то похожее на работу с дескрипторами шрифтов. К примеру, эта последовательность команд делает текст написанным полужирным шрифтом Courier величиной в 18 пикселей.

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

courier_18.configure(underline=1)

Применение параметров базы данных

Один из терминов, принятых в Tkinter – это база данных параметров. С помощью нее появляется возможность задать стиль программы без необходимости устанавливать подходящие значения для каждого элемента. Так, появляется возможность ряд параметров виджета не настраивать индивидуально, а задать единую стилевую концепцию, зависящую от иерархии виджетов.

Tkinter. Работа с цветами и шрифтами

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

Чтобы добавить параметры, необходимо использовать такой код.

Обратите внимание на метод option_add() , с помощью которого мы и выполняем эту задачу.

То есть, нам не надо отдельно задавать цвет заднего фона или передней части виджета. Это уже сделано централизованно по всей программе.

Я предлагаю стай. Он похож на colorama, но менее многословен и поддерживает цвета 8bit и 24bit. Вы также можете расширить регистр цветов своими собственными цветами.

Демо:

Есть несколько библиотек, которые помогают здесь. Для инструментов cmdline я иногда используюcolorama .

Например

Но вместо того, чтобы использовать строки, вы можете использовать перечисление и/или добавить несколько проверок. Не самое красивое решение, но работает на osx/linux и windows и прост в использовании.

Другие темы по этой теме и кросс-платформенной поддержке: например, здесь .

Вы можете попробовать это с python 3:

Если вы используете операционную систему windows, приведенный выше код может не работать для вас. Затем вы можете попробовать этот код:

Надеюсь, что помогает.

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

Например, давайте напишем простой пример, который требует ввода данных пользователем, чтобы понять:

Эффект такой:


Если нам нужен только один цвет, мы можем сделать это просто:

Эффект Pytharm выглядит следующим образом:


Формат записи и соответствующие инструкции следующие:

*конкретныйформат*:

Цвет символа терминала управляется escape-последовательностью, которая является функцией отображения системы в текстовом режиме и не имеет ничего общего с конкретным языком.Управляющая последовательность начинается с ESC, которая заканчивается \ 033 (код ASCII ESC - 27 в десятичной системе счисления и 033 в восьмеричной системе).

Значение параметра, представленного значением:

Метод отображения: 0()、1()、22()、4()、24()、 5()、25()、7()、27()、8()、28()
Цвет переднего плана: 30()、31()、32()、 33()、34()、35()、36()、37()
Фоновый цвет: 40()、41()、42()、 43()、44()、45()、46()、47()

Как можно создать оператор печати, например print("Hello world") , который может быть другого цвета (например, зеленый).

Кроме того, есть ли способ сделать это без необходимости загружать новые модули?

2 ответа

@ epicgamer300065, вот реальное полное решение IDLE, которое работало для меня с использованием Python 3.8.1 на win10pro, но оно НЕ работает в терминале.

Это из idlecolors и, поскольку ваш доступ ограничен, я включил полный необходимый модуль idlecolors.py здесь для вашего копирования / вставки удовольствие обойти вашу неспособность установить.

Как видите, единственными зависимостями являются модули sys и random , но random необходим только для функции randcol() , без которой вы могли бы жить, если бы вам пришлось.

А вот как вы бы это использовали:

Доступны следующие цвета: red() , orange() , green() , blue() , purple() , black() , brown() , и вы можете использовать randcol() для случайного цвета из этого выбора.

@ epicgamer300065, весь следующий код был взят из ссылок @Brian и I (@Scott), предоставленных ранее. Мне нужно было вставить оператор init () сразу после импорта, чтобы заставить код работать, и мне нужно было запустить его из командной строки (но привилегия администратора не требовалась), но он выдает ожидаемые цветные результаты , (К вашему сведению, я использую Python 3.8.1 на win10pro):

Читайте также: