Не знаю как сделать «проверку цвета»
Необходимо сделать проверку если при наведении цвет в квадратике был красный, то менять его на зеленый а если зеленый то на красный, если оранжевый , то на синий, и наоборот, если желтый то менять его на фиолетовый и наоборот соответственно.
Думаю можно сделать проверку обычными if
1 2 3 4
def mouseLeave(self, event): if self.can. (CURENT,. )#Как сделать проверку по цвету ? self.can.itemconfig(CURRENT, fill=choice(colors)) else
Как установить color colours на python
8. Как задать случайный цвет в turtle

9. Прыгающий мячик Bounce ball

10. Много прыгающих мячиков

11. Мяч и сила притяжения

12. Много мячиков и сила притяжения

13. Ускоряем анимацию при помощи функции tracer

14. Создаем игру Пинг-Понг на Python. Часть 1

15. Создаем игру Пинг-Понг на Python. Часть 2

16. Создаем игру Пинг-Понг на Python. Часть 3
Как задать случайный цвет в turtle
Случайный цвет мы может получать из заранее созданного списка, в котором хранятся названия цветов. При помощи функции choice из модуля random мы можем получить один элемент этого списка случайный образом.
Ниже представлен код, который каждую секунду меняет цвет экрана, а выбор цвета осуществляется случайным образом из списка colors
import turtle, random, time colors = ['red', 'green', 'yellow', 'purple', 'orange'] window = turtle.Screen() while True: window.bgcolor(random.choice(colors)) time.sleep(1) window.mainloop()
Но при такой реализации наш выбор цветов ограничен количеством элементов списка colors.
Другой способ задать случайный цвет, это передавать 3 величины в пределах от 0 до 1 в функцию bgcolor. Первая величина обозначает красный цвет, вторая — зеленый и третья — синий. Таким образом мы пользуемся моделью RGB(red green blue). Ниже программа, которая случайным образом задает цвет фона экрана.
import turtle, random, time window = turtle.Screen() while True: red = random.random() green = random.random() blue = random.random() window.bgcolor(red, green, blue) time.sleep(1) window.mainloop()
Используем цветной вывод в Python 3

В этой статье показано, как использовать цветной вывод в терминале на Python используя библиотеки и стандартные средства.
Введение
Вернуть текст в том же цвете терминала — типично для приложений CLI. Всегда есть случаи, когда мы хотим выделить вывод для пользователя, например, предупреждение или сообщение об ошибке. В этих случаях цветовая передача может иметь значение.
ANSI Escape Sequences
Ваш TeleTypeWriter (TTY), или, скорее, ваш терминал, не только способен показывать вывод программы, он также может отображать движущийся курсор, окрашивать текст, очищать весь экран и многое другое, чем просто статический вывод.
Возможно, вы видели утилиты командной строки с красочным текстом и индикаторами выполнения. Как мы контролируем представление данных, которые мы выводим на терминал?
Мы используем ANSI Escape Sequences/Codes (sequences — последовательности). Это специальные строки, которые изменяют поведение терминала. Знакомым примером может служить символ \n, представляющий собой новую последовательность строк. Ввод этого символа приведет к печати новой строки в выходных данных.
Текст окрашивается на вашем терминале на основе ANSI Escape Sequences. Эта статья посвящена ANSI Escape последовательностям, для того чтобы применить цветной вывод.
В терминалах широко используются две цветовые схемы:
- 16 цветов (8 фоновых + 8 передних)
- 256 цветов
Давайте начнем раскрашивать наши выходные данные с помощью опции 16 цветов.
Схема 16 цветов в Python
16-цветовая схема состоит из двух наборов по 8 цветов в каждом (8 фонов и 8 передних планов), и они могут быть отображены в терминале с помощью следующего синтаксиса:

Давайте проверим эту схему, напечатав цветной узор с красным жирным текстом и желтым фоном. Код стиля для представления полужирного текста равен 2. Цветовые коды для красного текста переднего плана-31 и 43 для желтого фона.
Итак, чтобы получить этот макет, пишем:
print('\033[2;31;43m CHEESY')
Выполните приведенную выше команду в вашем интерпретаторе Python (или в файле).
Вы увидите следующий вывод:

Как видно, наш текст перетекает на следующую строчку. Нам нужна точка сброса, чтобы остановить печать цветов.
Это можно сделать, добавив \033[0;0m к строке следующим образом:
print('\033[2;31;43m CHEESY \033[0;0m')
Код \033[0;0m представляет собой шаблон сброса, который возвращает терминал обратно в исходную цветовую схему.
Это обеспечит следующий результат:

Согласитесь, выглядит намного лучше!
Цветной вывод в Colorama
Colorama — это пакет Python, который предоставляет цветной вывод текста на Python. Он поддерживает только 16-цветовую схему. Модуль подготавливает Escape ANSI последовательности для получения цветного текста.
Давайте установим модуль с помощью pip:
pip install colorama
Мы рекомендуем вам установить его в виртуальной среде.
После настройки давайте перейдем к печати цветного текста с помощью Colorama:
# colorama_demo.py from colorama import init, Fore, Back, Style # Initializes Colorama init(autoreset=True) print(Style.BRIGHT + Back.YELLOW + Fore.RED + "CHEESY")
Сначала я импортирую функции init, чтобы инициализировать модуль и установить autoreset в True, чтобы нам не пришлось сбрасывать его вручную, Fore (текстовый объект переднего плана), Back (фоновый объект) и Style (объект стиля). Каждый объект имеет свой собственный набор констант, которые могут быть вызваны в функции print.
Добавляя эти компоненты удобным для человека способом, Colorama преобразует значения, такие как YELLOW (жёлтый цвет) в 43, для фонового объекта Back, RED (красный) в 31 для переднего объекта Fore и так далее. Так я получаю последовательность ANSI, как и в прошлый раз, хотя нам не нужно знать коды самим — Colorama делает это за нас.
Шаблон сброса не требуется, так как я установил аргумент autoreset в значение True при инициализации экземпляра.
Вывод программы будет выглядеть так:

Схема 256 цветов в Python
С развитием технологий 256-цветовая схема наиболее часто встречается в терминалах. Если вы используете ОС на базе Linux, вы можете проверить цветовую схему, поддерживаемую терминалом, введя следующую команду:
$ echo $TERM
Если эта команда возвращает xterm-256color, то ваш терминал поддерживает максимум 256 цветов.
Интересно, что это за цвета? Вы все узнаете сразу после того, как поймете синтаксис 256-цветовой схемы. Работа с 256 цветами немного отличается от работы с 16-цветовой схемой:

Существует заполнитель, чтобы определить, будет ли цвет применен к тексту или фону: 38;5; — для текста и 48;5; — для фона. Затем следует цветовой код в диапазоне от 0 до 255.
Основываясь на приведенном выше синтаксисе, давайте попробуем воссоздать логотип StackAbuse в Python с помощью последовательности Escape ANSI.
Логотип содержит бледно-серый фон (\033[48;5;236m) со словами: Stack белого цвета (\033[38;5;231m) и Abuse оранжевого цвета (\033[38;5;208m). И конечно, код сброса должен быть встроен в строку.
Тем не менее, мы можем воссоздать логотип с помощью этой последовательности ANSI:
>>> print("\033[48;5;236m\033[38;5;231mStack \033[38;5;208mAbuse\033[0;0m")

Потрясающе! Какие еще цвета может печатать терминал? Давайте посмотрим, напечатав все 256 цветов, поддерживаемых терминалом:
# colorspep8.py def colors_16(color_): return("\033[2;m \033[0;0m".format(num=str(color_))) def colors_256(color_): num1 = str(color_) num2 = str(color_).ljust(3, ' ') if color_ % 16 == 0: return(f"\033[38;5;m \033[0;0m\n") else: return(f"\033[38;5;m \033[0;0m") print("The 16 colors scheme is:") print(' '.join([colors_16(x) for x in range(30, 38)])) print("\nThe 256 colors scheme is:") print(' '.join([colors_256(x) for x in range(256)]))
Этот код содержит две функции, которые печатают переменную, которую вы передаете в них, в соответствующих последовательностях Escape ANSI. Как только я запущу скрипт и передам Х в определенном диапазоне, например (30,38] для 16-цветовой схемы или (0-255] для 256-цветовой схемы, он распечатает индексы в цветах при этих значениях.
Это позволит распечатать обе цветовые схемы в терминале:

Это может быть очень полезно в качестве краткого руководства при создании утилит командной строки.
Заключение
В этом уроке я рассказал, как печатать цветные выходные данные для символов, которые мы отправляем в поток stdout. Я показал, как это сделать с помощью встроенных функций Python, а также как использовать библиотеку Colorama.
Способы задания цвета в Matplotlib
При рисовании графиков с помощью Matplotlib часто приходится задавать цвета: для кривых, геометрических фигур и стрелок, текста и т.д. В Matplotlib существует несколько способов для указания цветов. В зависимости от задачи, вы можете выбрать наиболее удобный в данном случае.
В этой статье мы будем использовать пример, в котором будут рисоваться два квадрата — один будет накрыт другим, поэтому нижний квадрат будет виден только в том случае, если цвет верхнего содержит альфа-канал, задающий степень прозрачности. Нижний квадрат для простоты всегда будет отображаться черным цветом.
Заодно будет отображаться строка, с помощью которой задается цвет в конкретном примере.
Начнем с самого часто используемого способа задания цвета — с помощью однобуквенной строки. Таких цветов сравнительно немного.
- ‘b’ — синий цвет
- ‘g’ — зеленый цвет
- ‘r’ — красный цвет
- ‘c’ — голубой цвет
- ‘m’ — пурпурный цвет
- ‘y’ — желтый цвет
- ‘k’ — черный цвет
- ‘w’ — белый цвет
Вот, как выглядит наш пример:
import matplotlib. lines
import matplotlib. patches
import matplotlib. path
import matplotlib. pyplot as plt
def drawRect ( color ) :
plt. xlim ( — 2 , 2 )
plt. ylim ( — 2 , 2 )
plt. grid ( )
axes = plt. gca ( )
axes. set_aspect ( «equal» )
# Создадим «нижний» прямоугольник
rect_back = matplotlib. patches . Rectangle ( ( — 1.0 , — 1.0 ) , 2 , 2 , color = ‘k’ )
# Создадим чуть больший прямоугольник поверх предыдущего
# С цветом этого прямоугольника мы будем экспериментировать
rect_front = matplotlib. patches . Rectangle ( ( — 1.5 , — 1.5 ) , 3 , 3 , color = color )
# Добавим прямоугольники на график
axes. add_patch ( rect_back )
axes. add_patch ( rect_front )
# Добавим заголовок с обозначением цвета
plt. title ( ‘color = <>‘ . format ( color ) )
plt. show ( )
if __name__ == «__main__» :
# Цвет большого прямоугольника на графике
color = ‘g’
drawRect ( color )
Внешний вид графика выглядит следующим образом:

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

А мы воспользуемся одним из этих цветов и изменим наш предыдущий пример:
import matplotlib. lines
import matplotlib. patches
import matplotlib. path
import matplotlib. pyplot as plt
def drawRect ( color ) :
plt. xlim ( — 2 , 2 )
plt. ylim ( — 2 , 2 )
plt. grid ( )
axes = plt. gca ( )
axes. set_aspect ( «equal» )
rect_back = matplotlib. patches . Rectangle ( ( — 1.0 , — 1.0 ) , 2 , 2 , color = ‘k’ )
rect_front = matplotlib. patches . Rectangle ( ( — 1.5 , — 1.5 ) , 3 , 3 , color = color )
axes. add_patch ( rect_back )
axes. add_patch ( rect_front )
plt. title ( ‘color = <>‘ . format ( color ) )
plt. show ( )
if __name__ == «__main__» :
# Полный список именованных цветов
# http://matplotlib.org/examples/color/named_colors.html
color = ‘goldenrod’
drawRect ( color )
Результат будет выглядеть следующим образом:

Также цвет можно задавать в формате RGB с использованием символа «#», как это принято в HTML и CSS, задавая компоненты цвета в 16-ричной системе счисления. Например:
import matplotlib. lines
import matplotlib. patches
import matplotlib. path
import matplotlib. pyplot as plt
def drawRect ( color ) :
plt. xlim ( — 2 , 2 )
plt. ylim ( — 2 , 2 )
plt. grid ( )
axes = plt. gca ( )
axes. set_aspect ( «equal» )
rect_back = matplotlib. patches . Rectangle ( ( — 1.0 , — 1.0 ) , 2 , 2 , color = ‘k’ )
rect_front = matplotlib. patches . Rectangle ( ( — 1.5 , — 1.5 ) , 3 , 3 , color = color )
axes. add_patch ( rect_back )
axes. add_patch ( rect_front )
plt. title ( ‘color = <>‘ . format ( color ) )
plt. show ( )
if __name__ == «__main__» :
# .
color = ‘#31D115’
drawRect ( color )
В результате получим:

Используя подобный этот формат («#RRGGBBAA») можно задать также альфа-канал (непрозрачность цвета). То есть, если в конце строки (16-ричные числа AA) стоит FF — это абсолютно не прозрачный цвет (как будто бы альфа-канал не указан), а если 00 — это полностью прозрачный цвет, и объект станет невидимым. Пример с альфа-каналом показан ниже. Наконец-то мы увидим нижний квадрат, который в предыдущих примерах был скрыт.
import matplotlib. lines
import matplotlib. patches
import matplotlib. path
import matplotlib. pyplot as plt
def drawRect ( color ) :
plt. xlim ( — 2 , 2 )
plt. ylim ( — 2 , 2 )
plt. grid ( )
axes = plt. gca ( )
axes. set_aspect ( «equal» )
rect_back = matplotlib. patches . Rectangle ( ( — 1.0 , — 1.0 ) , 2 , 2 , color = ‘k’ )
rect_front = matplotlib. patches . Rectangle ( ( — 1.5 , — 1.5 ) , 3 , 3 , color = color )
axes. add_patch ( rect_back )
axes. add_patch ( rect_front )
plt. title ( ‘color = <>‘ . format ( color ) )
plt. show ( )
if __name__ == «__main__» :
# .
color = ‘#33DD11AA’
drawRect ( color )

Так же, как и в HTML/CSS, цвет можно задавать в сокращенном виде (в формате «#RGB»), то есть вместо «#AAFF55» можно написать «#AF5». Это показано в следующем примере. В сокращенном виде значение альфа-канала задавать нельзя.
import matplotlib. lines
import matplotlib. patches
import matplotlib. path
import matplotlib. pyplot as plt
def drawRect ( color ) :
plt. xlim ( — 2 , 2 )
plt. ylim ( — 2 , 2 )
plt. grid ( )
axes = plt. gca ( )
axes. set_aspect ( «equal» )
rect_back = matplotlib. patches . Rectangle ( ( — 1.0 , — 1.0 ) , 2 , 2 , color = ‘k’ )
rect_front = matplotlib. patches . Rectangle ( ( — 1.5 , — 1.5 ) , 3 , 3 , color = color )
axes. add_patch ( rect_back )
axes. add_patch ( rect_front )
plt. title ( ‘color = <>‘ . format ( color ) )
plt. show ( )
if __name__ == «__main__» :
# .
color = ‘#AF5’
drawRect ( color )
На этот раз результат будет выглядеть следующим образом:

Еще один способ задания цвета — с помощью кортежа или списка из трех элементов, задающих компоненты R, G и B соответственно. Главная особенность такого способа задания цвета состоит в том, что компоненты цвета должны быть представлены числом с плавающей точкой в диапазоне от 0.0 до 1.0. Например:
import matplotlib. lines
import matplotlib. patches
import matplotlib. path
import matplotlib. pyplot as plt
def drawRect ( color ) :
plt. xlim ( — 2 , 2 )
plt. ylim ( — 2 , 2 )
plt. grid ( )
axes = plt. gca ( )
axes. set_aspect ( «equal» )
rect_back = matplotlib. patches . Rectangle ( ( — 1.0 , — 1.0 ) , 2 , 2 , color = ‘k’ )
rect_front = matplotlib. patches . Rectangle ( ( — 1.5 , — 1.5 ) , 3 , 3 , color = color )
axes. add_patch ( rect_back )
axes. add_patch ( rect_front )
plt. title ( ‘color = <>‘ . format ( color ) )
plt. show ( )
if __name__ == «__main__» :
# .
color = ( 0.5 , 0.2 , 0.3 )
drawRect ( color )
Результат будет выглядеть следующим образом:

Если мы к кортежу (или списку), описывающему цвет, добавим четвертый элемент, то он будет обозначать альфа-канал или непрозрачность. То есть, если четвертый элемент равен 1.0, то цвет будет полностью непрозрачным (как будто альфа-канал не задан), а если он равен 0.0, то объект будет полностью прозрачным (невидимым).
В следующем примере цвету добавлен альфа-канал со значением 0.8.
import matplotlib. lines
import matplotlib. patches
import matplotlib. path
import matplotlib. pyplot as plt
def drawRect ( color ) :
plt. xlim ( — 2 , 2 )
plt. ylim ( — 2 , 2 )
plt. grid ( )
axes = plt. gca ( )
axes. set_aspect ( «equal» )
rect_back = matplotlib. patches . Rectangle ( ( — 1.0 , — 1.0 ) , 2 , 2 , color = ‘k’ )
rect_front = matplotlib. patches . Rectangle ( ( — 1.5 , — 1.5 ) , 3 , 3 , color = color )
axes. add_patch ( rect_back )
axes. add_patch ( rect_front )
plt. title ( ‘color = <>‘ . format ( color ) )
plt. show ( )
if __name__ == «__main__» :
# .
color = ( 0.5 , 0.2 , 0.3 , 0.8 )
drawRect ( color )
Результат будет выглядеть следующим образом:

Особый случай задания цвета — это выбор серого цвета различной степени яркости. Как известно, серый цвет — это такой цвет, у которого компоненты R, G и B равны между собой, поэтому для задания серого цвета достаточно задать лишь одно число. В Matplotlib для этого в качестве цвета можно указать строку с числом с плавающей точкой в интервале от 0.0 (черный цвет) до 1.0 (белый цвет).
Следующий пример рисует серый квадрат:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pylab
import matplotlib. patches
import matplotlib. lines
import matplotlib. path
def drawRect ( color ) :
pylab. xlim ( — 2 , 2 )
pylab. ylim ( — 2 , 2 )
pylab. grid ( )
axes = pylab. gca ( )
axes. set_aspect ( «equal» )
rect_back = matplotlib. patches . Rectangle ( ( — 0.5 , — 0.5 ) , 1 , 1 , color = ‘k’ )
rect_front = matplotlib. patches . Rectangle ( ( — 1 , — 1 ) , 2 , 2 , color = color )
axes. add_patch ( rect_back )
axes. add_patch ( rect_front )
pylab. text ( — 1.5 , 1.7 , u ‘color = <>‘ . format ( color ) )
pylab. show ( )
if __name__ == «__main__» :
color = ‘0.3’
drawRect ( color )

И в завершение рассмотрим еще один более экзотический способ. В Matplotlib можно выбирать цвет из таблицы цветов сайта xkcd. Для этого строка, описывающая цвет должна иметь формат ‘xkcd:имя_цвета’. Например, как показано далее:
import matplotlib. lines
import matplotlib. patches
import matplotlib. path
import matplotlib. pyplot as plt
def drawRect ( color ) :
plt. xlim ( — 2 , 2 )
plt. ylim ( — 2 , 2 )
plt. grid ( )
axes = plt. gca ( )
axes. set_aspect ( «equal» )
rect_back = matplotlib. patches . Rectangle ( ( — 1.0 , — 1.0 ) , 2 , 2 , color = ‘k’ )
rect_front = matplotlib. patches . Rectangle ( ( — 1.5 , — 1.5 ) , 3 , 3 , color = color )
axes. add_patch ( rect_back )
axes. add_patch ( rect_front )
plt. title ( ‘color = <>‘ . format ( color ) )
plt. show ( )
if __name__ == «__main__» :
# .
color = ‘xkcd:moss green’
drawRect ( color )
Результат будет выглядеть следующим образом:

Подводя итог всему вышесказанному, составим список способов задания цвета в Matplotlib:
- С помощью однобуквенной строки (например, ‘g’).
- С помощью словесного описания цвета (например, ‘goldenrod’).
- С помощью словесного описания цвета из таблицы xkcd (например, ‘xkcd:moss green’)
- С помощью указания компонент цвета в формате #RRGGBB (например, ‘#31D115’).
- С помощью указания компонент цвета в формате #RGB (например, ‘#AF5’).
- С помощью указания компонент цвета в виде кортежа или списка трех чисел в диапазоне 0.0 — 1.0 (например, (0.5, 0.2, 0.3)).
- С помощью указания компонент цвета и альфа-канала в виде кортежа или списка четырех чисел в диапазоне 0.0 — 1.0 (например, (0.5, 0.2, 0.3, 0.8)).
- Для задания серого цвета можно использовать строку с числом с плавающей точкой в диапазоне 0.0 — 1.0 (например, ‘0.3’).
Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
