Tkinter Canvas
Summary: in this tutorial, you’ll learn about the Tkinter Canvas widget and how to draw various objects on it.
Introduction to the Tkinter canvas widget
The canvas widget is the most flexible widget in Tkinter. The Canvas widget allows you to build anything from custom widgets to complete user interfaces.
The canvas widget is a blank area on which you can draw figures, create text, and place images.
To create a canvas widget, you create a new instance of the Canvas class from the tkinter module. For example, the following creates a canvas on a window:
First, create a new Canvas object with the width 600px , height 400px and background white :
Second, place the canvas object on the root window using the pack() geometry.
A canvas has a coordinate system like a window. The origin (0,0) is at the top-left corner. The direction of the x-axis is from left to right and the direction of the y-axis is from top to bottom.
Adding items to a canvas using create_* methods
A canvas object has a number of add_* methods. These methods allow you to place items on it. The items are:
| Item | Method |
|---|---|
| Line | create_line() |
| Rectangle | create_rectangle() |
| Oval | create_oval() |
| Arc | create_arc() |
| Polygon | create_polygon() |
| Text | create_text(() |
| Image | create_image() |
Creating a line
To create a line, you use the create_line() method. For example, the following creates a red line:

In this example, a line consists of two points (50,50) and (100,100) . The create_line() method connects the dots between these points.
The width argument specifies the width of the line. And the fill argument specifies the color of the line.
Creating a rectangle
To draw a rectangle, you use the create_rectangle() method. For example:

Creating an oval
To draw an oval, you use the create_oval() method. For example:

Like a rectangle, an oval takes the coordinate of the upper-left and lower-right corners of its bounding box. A bounding box of an oval is the smallest rectangle that contains the oval.
In this example, the upper-left and lower-right corners of the bounding box are (50,150) and (200,350) .

Creating a polygon
To draw a polygon, you use the create_polygon() method. For example:

Creating a text
To place a text on a canvas, you use the create_text() method. For example:

Create an arc
To draw an arc on a canvas, you use the create_arc() method. For example:

Create an image
To place an image on a canvas, you use the create_image() method. For example:

Note that if you pass directly the PhotoImage to the create_image() method, the image won’t display because it is automatically garbage collected.
The following code won’t work:
Binding an event to the item
All the create_* method returns a string value that identifies the item in the context of the Canvas object. And you can use this value to bind an event to the item.
To bind an event to an item, you use the tag_bind() method of the Canvas object. For example:
In this example, we bind the left-mouse click to the image item. If you click the image, the lambda will execute that removes the image from the canvas.
Tkinter как нарисовать круг
Блог веб разработки статьи | видеообзоры | исходный код

- Главная /
- PYTHON /
- tkinter python рисование
tkinter python рисование

Всем привет! Сегодня мы с вами познакомимся с элементом canvas который переводится как холст. Именно на данном холсте мы можем производить отрисовку различных фигур и текста. Итак, поехали!
Для того чтобы начать отрисовку в окне необходимо создать элемент canvas.
C помощью виджета canvas у нас создается холст. В него мы передали следующие параметры:
window — главное окно
width, height — ширина и высота холста
bg — заливка холста(gray — серый цвет)
cursor — курсор в фокусе холста(pencil — карандаш)

C помощью метода pack() мы выводим наш холст в главное окно.
Все теперь мы можем переходить к отрисовке. Начнем с простых линий.

Здесь мы создали две прямых линии. Для их создания воспользовались методом create_line() который принимает в себя следующие параметры.
Первые два параметра это координаты x,y первой точки начало отрезка.
Вторые два параметры это координаты x,y второй точки конец отрезка.
width — толщина линии.
fill — заливка, цвет линии(yellow — желтый).
Для того чтобы на холсте нарисовать прямоугольник или квадрат, нужно воспользоваться методом create_rectangle().

C помощью метода create_rectangle()мы нарисовали квадрат. Данный метод принимает в себя следующие параметры:
Первые два параметра координаты левого верхнего угла прямоугольника.
Вторые два параметра координаты правого нижнего угла прямоугольника.
fill — цвет заливки прямоугольника.
outline — цвет рамки прямоугольника.
Теперь переходим к отрисовке эллипсов и кругов.
Для того чтобы нарисовать круг или овал нам достаточно воспользоваться методом create_oval().

В основе отрисовки круга с помощью данного метода лежит отрисовка прямоугольника. То есть по сути мы отрисовываем невидимый квадрат куда может быть помещен в полную высоту и ширину квадрат или овал.
Данный метод принимает собой следующие аргументы:
Первые два аргумента в квадратных скобочках координаты x,y левого верхнего угла квадрата.
Вторые два аргумента в квадратных скобочках координаты x, y правого нижнего угла квадрата.
fill — цвет заливки овала.
Для отрисовки более сложных фигур треугольников, многоугольников, многогранников.
Мы можем воспользоваться методом create_polygon().

Здесь мы нарисовали треугольник. В качестве параметров данный метод принимает пары значений координат точек которые последовательно между собой соединяются прямыми.
Точек в разных координатах можно создавать сколько угодно. В результате можно нарисовать фигуру практически любой сложности. Свойство fill отвечает за цвет заливки фигуры, а outline за ее контур. Заметьте мы указали цвет заливки точно такой же как и цвет холста и в результате у нас получился эффект не закрашенной фигуры.
И напоследок рассмотрим отрисовку текста в canvas.

За отрисовку текста в canvas отвечает метод create_text(). В него передаются следующие параметры:
Первые два параметра координаты x, y расположения текста на холсте.
text — текст который мы хотим нарисовать
font — шрифт и размер текста
justify — выравнивание текста(слева, справа, по центру)
fill — цвет текста
Весь написанный за сегодня код выглядит так:
Отлично! Сегодня мы с вами познакомились с основами рисования canvas библиотеки tkinter.
Если у вас появились какие либо вопросы пишите в группу
или оставляйте их в комментариях к данной статье.
Также у меня есть канал на
где я каждую неделю публикую новые видео посвященные веб разработке. Так что переходите и будем развиваться вместе.
На этом у меня на сегодня все. Желаю вам успехов и удачи! Пока!
Оцените статью:
Статьи
Комментарии
Внимание. Комментарий теперь перед публикацией проходит модерацию
Евгений
Не подскажите как повернуть текст на 90 градусов чтобы подписать ось Y

Запись экрана
Данное расширение позволяет записывать экран и выводит видео в формате webm
Tkinter Create Oval – A Quick Guide

Hola Coders! In this article, we’ll be drawing different shapes using Tkinter. In the previous blog, the topic of Drawing lines using Tkinter was just a good start to this state-of-the-art concept. The reader can view it on this URL. So, in this one moving forward to new let us draw some more shapes.
Basic setup
For our project files, it is always a good programming practice to set up a new directory. This helps us in sorting out things faster for future purposes.
- Create a folder namely: Tkinter Shapes.
- Create a Python file that holds our script/code. Done!, we are set for coding.
- If any practitioner wants then they can create separate Python scripts for each code
Creating a Tkinter Canvas
A Canvas in Tkinter is the basic window that helps us perform drawing and relative stuff. It is a white screen that acts as a whiteboard where we have colorful chalk and it is ready to show our sketches. Below is the code for Canvas setup:
Code:
Output:

Canvas Screen
So, we have our Tlkinter window with a Canvas at its middle.
- It is of 350×350 resolution.
- The background is set to white.
Functions to draw shapes
There are built-in functions to draw shapes on the Canvas. These are derived from the Canvas class itself. The list is as follows:
- create_line() – to draw a line.
- create_arc() – sketch arcs on the screen.
- create_oval() – To draw ovals, circles, ellipses.
- create_polygon() – Trace hexagons, pentagons etc.
Let’s look at the 2 functions that matter most to us here – the create_arc() and create_oval() method. Let’s get started!
Create arcs in Tkinter
Code:
Output:

Drawing an arc
Explanation:
- The first seven lines of code are the basic setup of window and canvas.
- From the eight-line, we draw an arc. Call the create_arc() function. To place it in the axes plane give the coordinates (x1, y1, x2, y2). Remember to give them as per the sequence. The last parameter is width. This is for the thickness of the shape.
- We can also add color to the arc using the fill parameter. Just call it inside create_arc() and then give the color name in String format: “color_name”.
- To add more detail we render a text using the create_text() function. We place it at the top head of the Canvas and give the font like Arial and size as 30.
Code to draw colorful arcs:
Output:

A colorful arc
So, the code is the same as that of the previous. We just add the fill parameter inside the create_arc() function and we got a beautiful result.
Create circles and oval in Tkinter
Ready to create an oval using Tkinter? Let’s jump right into it.
Code for oval:
Output:

The green Oval
Explanation:
- The first seven lines are the basic setup of Tkinter and canvas.
- In the Canvas object, we call the create_oval() function. This is responsible for tracing ovals and circles.
- Give the coordinates and then we have our result.
The create_oval() method can also help you create circles. Simply ensure that x1 and y2 are the same and x2 and y1 are the same.
Code for circle:
Output:

A circle
Conclusion
So, in this way, we can draw different shapes using Tkinter’s Canvas and built-in shape functions. This library is very beginner-friendly to start with for GUI programming and development. I recommend the reader play around with the code and try to customize these shapes. I hope this will be a fun article to read.
Графика в Python: Tkinter и Canvas

В статье рассматривается создание графических интерфейсов с помощью библиотеки Tkinter. Отдельное внимание уделяется виджету Canvas, предназначенному для рисования (draw) в Python.
Tkinter представляет собой графическую кроссплатформенную библиотеку на основе средств Tk. Это свободное ПО, которое включено в стандартную библиотеку языка программирования Python.
В состав Tkinter входит много компонентов. Один из них — Canvas, он же «Холст». Canvas применяется в Python для вывода следующих графических примитивов:
- линий,
- прямоугольников,
- эллипсов,
- текста,
- окон,
- изображений.
Но прежде чем продолжить, следует вкратце рассказать о существующих методах позиционирования элементов.
Позиционирование элементов в Python. Python grid
Для позиционирования элементов, во время работы с Tkinter используют разные методы:
- pack();
- place();
- grid.
Метод grid позволяет поместить элемент в конкретную ячейку условной сетки либо грида. Используется ряд параметров:
- column — это номер столбца, отсчитывается с нуля;
- row — это номер строки, отсчитывается с нуля;
- columnspan — указывает число столбцов, занимаемых элементом;
- rowspan — указывает число строк;
- ipadx и ipady — подразумеваются отступы по горизонтали и вертикали от границ компонента до текста компонента;
- padx и pady — аналогичные отступы, но от границ ячейки грида до границ компонента;
- sticky — определяет выравнивание элемента в ячейке в случае, когда ячейка больше компонента.
Для начала работы с Tkinter библиотеку сначала надо импортировать:
from tkinter import *
Ниже определен грид из девяти кнопок:

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

У create_line() есть параметры — это координаты x и y . Именно они обозначают начальные и конечные точки будущего линейного отрезка. Вот как этот метод рисует (draws) обычную вертикальную линию:

Можно создавать и пунктирную линию — для этого существует опция dash . У этой опции есть собственные значения, помещенные в скобки. В примере это (4, 2).

- цифра 4 обозначает длину тире (точки) в пикселях;
- цифра 2 отвечает за ширину (width) пустого промежутка, существующего между тире (точками).
Если прописать dash=(1, 1) , на выходе получится линия из точек.
Когда рисуешь обычную линию, можно указать в качестве координат несколько конечных точек. Кусочек кода ниже отвечает за отрисовку треугольника — он ведь тоже состоит из простых линий.
В результате весь код отработает следующим образом:

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

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

Далее создается прямоугольник, для чего используется create_rectangle() . Здесь надо прописать 4 параметра:
— координатное положение верхней левой ограничительной точки (левого верхнего угла);
— координатное положение нижней правой ограничительной точки (нижнего правого угла).
Если есть необходимость, то посредством параметра outline у прямоугольника задается цвет контура. Окрасить всю внутреннюю область можно с помощью параметра fill :

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

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

Благодаря этому коду будут созданы такие геометрические фигуры, как круг, прямоугольник, овал, дуга, многоугольник. Также следует обратить внимание на контур — он окрасится в красный цвет, а заливка будет зеленой. Ширина контура (width) — 2 px.
Сначала создается круг. Для его получения в Python задействуется метод create_oval() . Первые 4 параметра в нем нужны для указания ограничивающих координат. Здесь x и y являются координатами правой нижней и верхней левой точек квадрата, где помещен круг:

Аналогично создается и овал — меняются лишь первые 4 параметра.
Следующий этап — прямоугольник. Нарисованный restangle тоже имеет координатные значения x и y , играющие роль ограничительных точек.

Далее создается дуга. Так как она — это часть круга, то надо указать ограничительные координаты дуги. Ее угол устанавливается посредством параметра start , а размер угла — с помощью параметра extent :

Последнее — это многоугольник. Так как присутствует много углов, надо задействовать специальный метод create_polygon() , позволяющий задать нужное число координатных значений:

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

Также с помощью Canvas можно без проблем вставлять изображения и рисовать текст (text), используя шрифты разной высоты (height) и стиля (style).
Другие GUI-библиотеки для Python
Кроме библиотеки Tkinter и виджета Canvas, существует и масса других графических библиотек, применяемых для создания рисунков (drawings). Среди них:
- Flexx,
- wxPython,
- PyQt5,
- PyGUI,
- PyGTK и многие другие.
При рисовании обычно применяется каскадный способ: компоненты добавляются поверх друг друга.
Drawing with Turtle
Отдельного упоминания заслуживает модуль Turtle (по аналогии с черепашками Turtles). Этот модуль позволяет создавать на Питоне рисунки и другие графические объекты, включая игры в специальном окне. Для того чтобы приступить к рисованию (drawing), надо сначала присоединить его (импортировать). Делается это одним из 3-х способов:
1) import turtle ;
2) from turtle import open as t ;
3) from turtle import* .
Drawing with Pygame
Pygame — набор модулей, используемый в тех случаях, когда нужно нарисовать 2D-игру. Также Pygame нередко называют библиотекой/фреймворком. С его помощью создают как компьютерные игры, так и мультимедийные приложения.

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