что такое canvas в python

Canvas, рисование графики ч.1 / tkinter 18

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

Canvas (полотно) — это прямоугольная область, в которой можно выводить не только текст или геометрические фигуры, такие как линии, прямоугольники или овалы, но также другие виджеты Tkinter. Все вложенные объекты называются элементами Canvas, и у каждого есть свой идентификатор, с помощью которого ими можно манипулировать еще до момента отображения.

Рассмотрим методы класса Canvas на реальных примерах, что поможет познакомиться с распространенными паттернами, которые в дальнейшем помогут при создании приложений.

Понимание системы координат

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

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

Следующая программа содержит пустое полотно, а также метку, которая показывает положение курсора на нем. Можно перемещать курсор и видеть, в каком положении он находится. Это явно показывает, как изменяются координаты x и y в зависимости от положения курсора:

Источник

Canvas. Идентификаторы, теги и анимация

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

В Tkinter существует два способа «пометить» фигуры, размещенные на холсте, – это идентификаторы и теги. Первые всегда уникальны для каждого объекта. Два объекта не могут иметь одни и тот же идентификатор. Теги не уникальны. Группа объектов на холсте может иметь один и тот же тег. Это дает возможность менять свойства всей группы. Отдельно взятая фигура на Canvas может иметь как идентификатор, так и тег.

Идентификаторы

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

С помощью метода itemconfig можно изменять другие свойства. Метод coords устанавливает новые координаты фигуры, если они заданы. Если указывается только идентификатор или тег, то coords возвращает текущие координаты.

Здесь при получении холстом фокуса (нажать Tab ) изменится цвет и размер квадрата.

Метод tag_bind позволяет привязать событие (например, щелчок кнопкой мыши) к определенной фигуре на Canvas. Таким образом, можно реализовать обращение к различным областям холста с помощью одного и того же события. Пример ниже иллюстрирует, как изменения на холсте зависят от того, где произведен клик.

Практическая работа. Анимация в tkinter

В данной программе создается анимация круга, который движется от левой границы холста до правой:

Метод after вызывает функцию, переданную вторым аргументом, через количество миллисекунд, указанных первым аргументом.

Курс с примерами решений практических работ: android-приложение, pdf-версия.

Источник

Синтаксис создания виджета подобен, другим объектам tkinter :

Базовые параметры

В tkinter от класса Canvas() создаются объекты-холсты, на которых можно «рисовать», размещая различные фигуры и объекты. Делается это с помощью вызовов соответствующих методов.

При создании экземпляра Canvas необходимо указать его ширину и высоту. При размещении геометрических примитивов и других объектов указываются их координаты на холсте. Точкой отсчета является верхний левый угол.

что такое canvas в python. canvas 01.78367a62. что такое canvas в python фото. что такое canvas в python-canvas 01.78367a62. картинка что такое canvas в python. картинка canvas 01.78367a62.

В программе ниже создается холст. На нем с помощью метода create_line() рисуются отрезки. Сначала указываются координаты начала (x1, y1), затем – конца (x2, y2):

Остальные свойства являются необязательными. Так activefill определяет цвет отрезка при наведении на него курсора мыши.

Создание прямоугольников методом create_rectangle() :

что такое canvas в python. canvas 03.8b71589f. что такое canvas в python фото. что такое canvas в python-canvas 03.8b71589f. картинка что такое canvas в python. картинка canvas 03.8b71589f.

Методом create_polygon() рисуется произвольный многоугольник путем задания координат каждой его точки:

Для удобства координаты точек можно заключать в скобки:

Метод create_oval() создает эллипсы. При этом задаются координаты гипотетического прямоугольника, описывающего эллипс. Если нужно получить круг, то соответственно описываемый прямоугольник должен быть квадратом:

что такое canvas в python. canvas 06.2fdb8321. что такое canvas в python фото. что такое canvas в python-canvas 06.2fdb8321. картинка что такое canvas в python. картинка canvas 06.2fdb8321.

В данном примере светло-серый круг используется исключительно для наглядности.

На холсте можно разместить текст. Делается это с помощью метода create_text():

По умолчанию в заданной координате располагается центр текстовой надписи. Чтобы изменить это и, например, разместить по указанной координате левую границу текста, используется якорь со значением W (от англ. west – запад). Другие значения: N, NE, E, SE, S, SW, W, NW. Если букв, задающих сторону привязки, две, то вторая определяет вертикальную привязку (вверх или вниз «уйдет» текст от заданной координаты). Свойство justify определяет лишь выравнивание текста относительно себя самого.

# Упражнения

# Canvas. Идентификаторы, теги и анимация

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

В tkinter существует два способа «пометить» фигуры, размещенные на холсте, – это идентификаторы и теги. Первые всегда уникальны для каждого объекта. Два объекта не могут иметь одни и тот же идентификатор. Теги не уникальны. Группа объектов на холсте может иметь один и тот же тег. Это дает возможность менять свойства всей группы. Отдельно взятая фигура на Canvas может иметь как идентификатор, так и тег.

Методы, создающие фигуры на холсте, возвращают численные идентификаторы этих объектов, которые можно присвоить переменным, через которые позднее обращаться к созданным фигурам:

С помощью метода itemconfig() можно изменять другие свойства. Метод coords() устанавливает новые координаты фигуры, если они заданы. Если указывается только идентификатор или тег, то coords() возвращает текущие координаты:

Здесь при получении холстом фокуса (нажать Tab) изменится цвет и размер квадрата.

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

Метод tag_bind() позволяет привязать событие (например, щелчок кнопкой мыши) к определенной фигуре на Canvas. Таким образом, можно реализовать обращение к различным областям холста с помощью одного и того же события. Пример ниже иллюстрирует, как изменения на холсте зависят от того, где произведен клик:

Метод delete() удаляет объект. Если нужно очистить холст, то вместо идентификаторов или тегов используется константа ALL.

# Упражнения

В данной программе создается анимация круга, который движется от левой границы холста до правой:

Метод after() вызывает функцию, переданную вторым аргументом, через количество миллисекунд, указанных первым аргументом.

Источник

Справочник

Функции модуля canvas

canvas.circle(x, y, radius)

Рисует круг в точке x, y с радиусом radius;

canvas.clear()

Очищает холст целиком;

canvas.clear_rect(x, y, width, height)

Очищает прямоугольную область с левым верхним углом в точке x, y, шириной width и высотой height;

canvas.draw()

Функция перерисовки холста. Важно: вызывается только после того, как вызваны все нужные функции рисования;

canvas.fill_circle(x, y, radius)

Рисует закрашенный круг в точке x, y с радиусом radius;

canvas.fill_rect(x, y, width, height)

Рисует закрашенный прямоугольник с левым верхним углом в точке x, y, шириной width и высотой height;

canvas.fill_style(‘color’)

Функция для изменения цвета закраски. color — устанавливаемый цвет. Цвета можно выбрать из списка на этой странице Википедии;

canvas.fill_text(text, x, y, font=’Monospace’, size=24, align=’left’)

Рисует закрашенный текст text в точке x, y шрифтом font (Monospace по умолчнию), размером size (по умолчанию 24) пикселей и выравниванием align (по умолчанию — «left»). Возможные варианты выравнивания — «left», «right» и «center»

canvas.line_to(x, y)

Рисует линию из точки, в которой находится указатель в точку, с координатами x, y;

canvas.line_width(width)

Устанавливает ширину линии width в пикселях;

canvas.listen()

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

canvas.move_to(x, y)

Устанавливает указатель в точку, с координатами x, y;

canvas.radius_line(x, y, angle, length)

Рисует радиальную линию из точки x, y под углом angle (в градусах) и длиной length.

canvas.reset()

Очищает холст целиком, сбрасывает цвет на черный и устанавливает ширину линий в 1;

canvas.set_color(‘color’)

Функция для изменения цвета кисти. color — устанавливаемый цвет. Цвета можно выбрать из списка на этой странице Википедии;

canvas.set_onclick(callback)

Устанавливает обработчик клика мышкой по холсту. Функция-обработчик callback должна принимать два параметра — x и y. Например

canvas.stroke_rect(x, y, width, height)

Рисует прямоугольник с левым верхним углом в точке x, y, шириной width и высотой height;

canvas.stroke_style(‘color’)

Делает то же, что и canvas.set_color

canvas.stroke_text(text, x, y, font=’Monospace’, size=24, align=’left’)

Рисует контур текста text в точке x, y шрифтом font (Monospace по умолчнию), размером size (по умолчанию 24) пикселей и выравниванием align (по умолчанию — «left»). Возможные варианты выравнивания — «left», «right» и «center»

canvas.onclick(callback)

Тоже самое, что canvas.set_onclick.

canvas.onkey(callback, что такое canvas в python)

Устанавливает обработчик нажатия клавиши на клавиатуре. Если параметр key_code не передан, функция-обработчик должна принимать один аргумент. В него будет передан код нажатой клавиши.

Если параметр key_code передан, то функция обработчик не должна принимать ни одного аргумента.

canvas.onkeyup(callback, что такое canvas в python)

Устанавливает обработчик отпускания клавиши на клавиатуре. Если параметр key_code не передан, функция-обработчик должна принимать один аргумент. В него будет передан код отпушенной клавиши.

Если параметр key_code передан, то функция обработчик не должна принимать ни одного аргумента.

Коды клавиш такие же, как и в canvas.onkey

canvas.onrightclick(callback)

То же самое, что canvas.set_onclick, но для правой кнопки мыши

Коды клавиш

Код клавиши — это строка, чувствительная к регистру.

Источник

Графика в Python: Tkinter и Canvas

что такое canvas в python. oj 1080x720 14. что такое canvas в python фото. что такое canvas в python-oj 1080x720 14. картинка что такое canvas в python. картинка oj 1080x720 14.

В статье рассматривается создание графических интерфейсов с помощью библиотеки Tkinter. Отдельное внимание уделяется виджету Canvas, предназначенному для рисования (draw) в Python.

Tkinter представляет собой графическую кроссплатформенную библиотеку на основе средств Tk. Это свободное ПО, которое включено в стандартную библиотеку языка программирования Python.

В состав Tkinter входит много компонентов. Один из них — Canvas, он же «Холст». Canvas применяется в Python для вывода следующих графических примитивов:

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

Позиционирование элементов в Python. Python grid

Для позиционирования элементов, во время работы с Tkinter используют разные методы:

Метод grid позволяет поместить элемент в конкретную ячейку условной сетки либо грида. Используется ряд параметров:

Для начала работы с Tkinter библиотеку сначала надо импортировать:

from tkinter import *

Ниже определен грид из девяти кнопок:

что такое canvas в python. 1 1. что такое canvas в python фото. что такое canvas в python-1 1. картинка что такое canvas в python. картинка 1 1.

Canvas: рисуем линии в Python

Виджет Canvas предоставляет функциональность, с помощью которой разработчик может нарисовать (drawn) графику в Tkinter. Для чего может понадобиться эта графика? К примеру, для получения статистики, создания своих виджетов, отрисовки небольших игр.

что такое canvas в python. 2 1. что такое canvas в python фото. что такое canvas в python-2 1. картинка что такое canvas в python. картинка 2 1.

что такое canvas в python. 3 1. что такое canvas в python фото. что такое canvas в python-3 1. картинка что такое canvas в python. картинка 3 1.

что такое canvas в python. 4.1. что такое canvas в python фото. что такое canvas в python-4.1. картинка что такое canvas в python. картинка 4.1.

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

В результате весь код отработает следующим образом:

что такое canvas в python. 4 1. что такое canvas в python фото. что такое canvas в python-4 1. картинка что такое canvas в python. картинка 4 1.

Canvas: рисуем цветные прямоугольники в Python

Цвет — это объект, отображающий комбинацию трех цветов (красного, зеленого, синего — RGB). С помощью кода ниже были нарисованы прямоугольники. Также они были закрашены различными цветами.

что такое canvas в python. 5 1. что такое canvas в python фото. что такое canvas в python-5 1. картинка что такое canvas в python. картинка 5 1.

Так создается виджет Canvas:

что такое canvas в python. 6 1. что такое canvas в python фото. что такое canvas в python-6 1. картинка что такое canvas в python. картинка 6 1.

— координатное положение верхней левой ограничительной точки (левого верхнего угла);

— координатное положение нижней правой ограничительной точки (нижнего правого угла).

Если есть необходимость, то посредством параметра outline у прямоугольника задается цвет контура. Окрасить всю внутреннюю область можно с помощью параметра fill :

что такое canvas в python. 7 1. что такое canvas в python фото. что такое canvas в python-7 1. картинка что такое canvas в python. картинка 7 1.

А вот и итоговый результат:

что такое canvas в python. 8. что такое canvas в python фото. что такое canvas в python-8. картинка что такое canvas в python. картинка 8.

Рисуем сложные формы

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

что такое canvas в python. 9. что такое canvas в python фото. что такое canvas в python-9. картинка что такое canvas в python. картинка 9.

Благодаря этому коду будут созданы такие геометрические фигуры, как круг, прямоугольник, овал, дуга, многоугольник. Также следует обратить внимание на контур — он окрасится в красный цвет, а заливка будет зеленой. Ширина контура (width) — 2 px.

что такое canvas в python. 10. что такое canvas в python фото. что такое canvas в python-10. картинка что такое canvas в python. картинка 10.

Аналогично создается и овал — меняются лишь первые 4 параметра.

что такое canvas в python. 11. что такое canvas в python фото. что такое canvas в python-11. картинка что такое canvas в python. картинка 11.

что такое canvas в python. 12. что такое canvas в python фото. что такое canvas в python-12. картинка что такое canvas в python. картинка 12.

что такое canvas в python. 13. что такое canvas в python фото. что такое canvas в python-13. картинка что такое canvas в python. картинка 13.

Остается посмотреть результат:

что такое canvas в python. 14. что такое canvas в python фото. что такое canvas в python-14. картинка что такое canvas в python. картинка 14.

Также с помощью Canvas можно без проблем вставлять изображения и рисовать текст (text), используя шрифты разной высоты (height) и стиля (style).

Другие GUI-библиотеки для Python

Кроме библиотеки Tkinter и виджета Canvas, существует и масса других графических библиотек, применяемых для создания рисунков (drawings). Среди них:

При рисовании обычно применяется каскадный способ: компоненты добавляются поверх друг друга.

Drawing with Turtle

Отдельного упоминания заслуживает модуль Turtle (по аналогии с черепашками Turtles). Этот модуль позволяет создавать на Питоне рисунки и другие графические объекты, включая игры в специальном окне. Для того чтобы приступить к рисованию (drawing), надо сначала присоединить его (импортировать). Делается это одним из 3-х способов:

2) from turtle import open as t ;

Drawing with Pygame

Pygame — набор модулей, используемый в тех случаях, когда нужно нарисовать 2D-игру. Также Pygame нередко называют библиотекой/фреймворком. С его помощью создают как компьютерные игры, так и мультимедийные приложения.

что такое canvas в python. 15. что такое canvas в python фото. что такое canvas в python-15. картинка что такое canvas в python. картинка 15.

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *