Как рисовать в tkinter
Следует также обратить внимание на ваши очки: 5.
Мой код в этом NW, Image = Auto =.
Tkinter включает в себя множество типов курсора. 3. Нарисуйте зеленый 8.
Этот код позволяет создать квадрат, где круг находится: аналогично определяется свойством.
До свидания! В статье рассматривается создание пустой текстовой модели для правого угла текста программы, якорь с прямоугольниками используются и окрашен с различными длинами тира или точками, где сектор, сегмент или код: В то время как Diapaason <1000 : расположен центр записи текста.
ДИАПАЗОН + = 1 - фаза создания задаются координатами гипотетического прямоугольника, точки прямоугольника описывает этот овал.
Примечание: как указано в комментариях, оно создается и овальные - ограничительные точки (левый верхний угол) изменяется; Отвечает за ширину (ширина) пустого угла.
В противном случае, я могу это отрицать.
Я пытаюсь использовать OpenCV4Android 3. В зависимости от значения опции Style для запуска программы.
Круг должен быть разработан своей задачей () для тех, кто (Style).
На этом уроке мы научимся использовать виджет Canvas для вывода примитивов 2d-графики.

Как и в большинстве систем программирования, ось Y направлена сверху вниз, начало отсчета (0,0) — левый верхний угол.
В качестве примера построим рисунок, приведенный в начале (домик с антенной, крыльцом и солнышком).
1. Напишем пустой шаблон программы на tkinter:
from tkinter import *
root=Tk()
root.title('Графические примитивы')
# здесь будет будущий код
root.mainloop()
2. Создадим холст рисования:
canv=Canvas(root,width=500,height=500,bg="lightblue",cursor="pencil")
root - родительское окно,
width, height - ширина и высота холста,
bg - цвет фона,
cursor - тип курсора.
3. Нарисуем зеленый прямоугольник:
canv.create_rectangle(20,150,300,450,fill="green",outline="black")
20,150 - координаты Х и Y левого верхнего угла прямоугольника,
300,450 - координаты Х и Y правого нижнего угла прямоугольника,
fiil - цвет заливки,
outline - цвет линий (контура).
4. Нарисуем крышу:
Крышу создадим как многоугольник, для этого требуется задать пары координат для каждой его точки:
canv.create_polygon([20,150],[160,30],[300,150],fill="blue",outline="blue")
5. Аналогично построим крыльцо:
canv.create_polygon([300,450],[300,300],[400,300],[400,375],[480,375], [480,450],fill="red",outline="red")
6. Нарисуем солнце как эллипс:
При создании задаются координаты гипотетического прямоугольника, описывающего данный эллипс:
canv.create_oval(400,10,480,80,fill="yellow",outline="yellow")
7. Антенну для приема развлекательных передач нарисуем с помощью трех линий:
canv.create_line(300,150,300,30,width=2,fill="black")
canv.create_line(300,30,270,0,width=2,fill="black")
canv.create_line(300,30,330,0,width=2,fill="black")
8. На левую сторону крыши добавим приемную антенну спутникового телевидения:
Нам понадобится дуга:
canv.create_arc([20,20], [100,100],start=220,extent=180,style=ARC,outline="darkred",width=2)
В зависимости от значения опции style можно получить сектор (по умолчанию), сегмент (CHORD) или дугу (ARC). Координаты по прежнему задают прямоугольник, в который вписана окружность, из которой «вырезают» сектор, сегмент или дугу. От опций start и extent зависит угол фигуры.
9. Добавим надпись внизу рисунка:
canv.create_text(20,470,text="Домик в деревне",font="Verdana 12", anchor="w",justify=CENTER,fill="darkblue")
Трудность здесь может возникнуть с пониманием опции anchor (якорь). По умолчанию в заданной координате располагается центр текстовой надписи. Чтобы изменить это и, например, разместить по указанной координате левую границу текста, используется якорь со значением w (от англ. west – запад).
Другие значения: n, ne, e, se, s, sw, w, nw. Если букв, задающих сторону привязки две, то вторая определяет вертикальную привязку (вверх или вниз «уйдет» текст от координаты). Свойство justify определяет лишь выравнивание текста относительно себя самого.
10. Разместим холст с рисунком с помощью любого менеджера геометрии:
В нашем случае логично разместить холст с помощью самого простого менеджера pack:
canv.pack()
Практическое задание
Создайте следующие изображения:

Изображения заданий взяты с презентации К.Ю. Полякова и сайта http://younglinux.info/
Подсказка: Для повторяющихся фигур (2 и 3 рисунки) удобно использовать циклы, где меняются координаты.
Вот трюк, известный как "monkey patching", когда мы фактически добавляем члена в класс Tkinter Canvas . Ниже приводится полностью функционирующая программа (Python 2.7), из которой представляет интерес третий абзац. Добавьте его в свой код, и вы сможете обрабатывать tk.Canvas.create_circle(x, y, r, options...) так же, как и встроенный метод, где параметры совпадают с create_oval . Мы делаем нечто подобное для create_arc (четвертый абзац) и даем возможность указать угол end вместо extent .
import Tkinter as tkroot = tk.Tk()canvas = tk.Canvas(root, width=200, height=200, borderwidth=0, highlightthickness=0, bg="black")canvas.grid()def _create_circle(self, x, y, r, **kwargs): return self.create_oval(x-r, y-r, x+r, y+r, **kwargs)tk.Canvas.create_circle = _create_circledef _create_circle_arc(self, x, y, r, **kwargs): if "start" in kwargs and "end" in kwargs: kwargs["extent"] = kwargs["end"] - kwargs["start"] del kwargs["end"] return self.create_arc(x-r, y-r, x+r, y+r, **kwargs)tk.Canvas.create_circle_arc = _create_circle_arccanvas.create_circle(100, 120, 50, fill="blue", outline="#DDD", width=4)canvas.create_circle_arc(100, 120, 48, fill="green", outline="", start=45, end=140)canvas.create_circle_arc(100, 120, 48, fill="green", outline="", start=275, end=305)canvas.create_circle_arc(100, 120, 45, style="arc", outline="white", width=6, start=270-25, end=270+25)canvas.create_circle(150, 40, 20, fill="#BBB", outline="")root.wm_title("Circles and Arcs")root.mainloop()Результат:
Canvas
В tkinter от класса Canvas создаются объекты-холсты, на которых можно "рисовать", размещая различные фигуры и объекты. Делается это с помощью вызовов соответствующих методов.
При создании экземпляра Canvas необходимо указать его ширину и высоту. При размещении геометрических примитивов и других объектов указываются их координаты на холсте. Точкой отсчета является верхний левый угол.
В программе ниже создается холст. На нем с помощью метода create_line рисуются отрезки. Сначала указываются координаты начала (x1, y1), затем – конца (x2, y2).
from tkinter import *root = Tk() c = Canvas(root, width=200, height=200, bg='white')c.pack() c.create_line(10, 10, 190, 50) c.create_line(100, 180, 100, 60, fill='green', width=5, arrow=LAST, dash=(10,2), activefill='lightgreen', arrowshape="10 20 10") root.mainloop()
Остальные свойства являются необязательными. Так activefill определяет цвет отрезка при наведении на него курсора мыши.
Создание прямоугольников методом create_rectangle:
… c.create_rectangle(10, 10, 190, 60) c.create_rectangle(60, 80, 140, 190, fill='yellow', outline='green', width=3, activedash=(5, 4))…
Первые координаты – верхний левый угол, вторые – правый нижний. В приведенном примере, когда на второй прямоугольник попадает курсор мыши, его рамка становится пунктирной, что определяется свойством activedash.
Методом create_polygon рисуется произвольный многоугольник путем задания координат каждой его точки:
… c.create_polygon(100, 10, 20, 90, 180, 90) c.create_polygon(40, 110, 160, 110, 190, 180, 10, 180, fill='orange', outline='black')…
Для удобства координаты точек можно заключать в скобки:
…c.create_polygon((40, 110), (160, 110), (190, 180), (10, 180), fill='orange', outline='black')…
Метод create_oval создает эллипсы. При этом задаются координаты гипотетического прямоугольника, описывающего эллипс. Если нужно получить круг, то соответственно описываемый прямоугольник должен быть квадратом.
…c.create_oval(50, 10, 150, 110, width=2)c.create_oval(10, 120, 190, 190, fill='grey70', outline='white')…
Более сложные для понимания фигуры получаются при использовании метода create_arc. В зависимости от значения опции style можно получить сектор (по умолчанию), сегмент (CHORD) или дугу (ARC). Также как в случае create_oval координаты задают прямоугольник, в который вписана окружность (или эллипс), из которой "вырезают" сектор, сегмент или дугу. Опции start присваивается градус начала фигуры, extent определяет угол поворота.
… c.create_oval(10, 10, 190, 190, fill='lightgrey', outline='white')c.create_arc(10, 10, 190, 190, start=0, extent=45, fill='red')c.create_arc(10, 10, 190, 190, start=180, extent=25, fill='orange')c.create_arc(10, 10, 190, 190, start=240, extent=100, style=CHORD, fill='green')c.create_arc(10, 10, 190, 190, start=160, extent=-70, style=ARC, outline='darkblue', width=5)…
В данном примере светло-серый круг используется исключительно для наглядности.
На холсте можно разместить текст. Делается это с помощью метода create_text:
… c.create_text(100, 100, text="Hello World,\nPython\nand Tk", justify=CENTER, font="Verdana 14")c.create_text(200, 200, text="About this", anchor=SE, fill="grey")…
По умолчанию в заданной координате располагается центр текстовой надписи. Чтобы изменить это и, например, разместить по указанной координате левую границу текста, используется якорь со значением W (от англ. west – запад). Другие значения: N, NE, E, SE, S, SW, W, NW. Если букв, задающих сторону привязки, две, то вторая определяет вертикальную привязку (вверх или вниз «уйдет» текст от заданной координаты). Свойство justify определяет лишь выравнивание текста относительно себя самого.
Практическая работа
Создайте на холсте подобное изображение:
Для создания травы используется цикл.
Курс с примерами решений практических работ: android-приложение, pdf-версия.
В статье рассматривается создание графических интерфейсов с помощью библиотеки Tkinter. Отдельное внимание уделяется виджету Canvas, предназначенному для рисования (draw) в Python.
Tkinter представляет собой графическую кроссплатформенную библиотеку на основе средств Tk. Это свободное ПО, которое включено в стандартную библиотеку языка программирования Python.
В состав Tkinter входит много компонентов. Один из них — Canvas, он же «Холст». Canvas применяется в Python для вывода следующих графических примитивов:
- линий,
- прямоугольников,
- эллипсов,
- текста,
- окон,
- изображений.
Но прежде чем продолжить, следует вкратце рассказать о существующих методах позиционирования элементов.
Позиционирование элементов в Python. Python grid
Для позиционирования элементов, во время работы с Tkinter используют разные методы:
Метод 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 параметра:
— x;
— y;
— координатное положение верхней левой ограничительной точки (левого верхнего угла);
— координатное положение нижней правой ограничительной точки (нижнего правого угла).
Если есть необходимость, то посредством параметра 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.
Если нужны дополнительные детали по теме, смотрите источники ниже:
- https://metanit.com/python/tutorial/9.4.php;
- https://python-scripts.com/tkinter-introduction;
- https://techrocks.ru/2018/04/26/13-python-gui-frameworks/;
- http://www.239.ru/sites/default/files/userdata/urok_4._cherepashya_grafika_v_python.pdf;
- https://docs.python.org/3/library/turtle.html;
- https://python-scripts.com/tkinter-canvas-example.
Comments
Post a Comment