Tkinter как нарисовать круг
Перейти к содержимому

Tkinter как нарисовать круг

  • автор:

Как нарисовать круг в Tkinter?

Как задать радиус кругу в канвасе? Насколько я понимаю тут нет такого атрибута.

Отслеживать

49.3k 17 17 золотых знаков 57 57 серебряных знаков 101 101 бронзовый знак

задан 26 мая 2020 в 11:14

Vova Shkurletov Vova Shkurletov

187 2 2 серебряных знака 11 11 бронзовых знаков

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

26 мая 2020 в 11:25

Спасибо, буду стараться.

26 мая 2020 в 13:42

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

canvas.create_oval(x - r, y - r, x + r, y + r ) 

Отслеживать

49.3k 17 17 золотых знаков 57 57 серебряных знаков 101 101 бронзовый знак

ответ дан 26 мая 2020 в 11:25

975 1 1 золотой знак 8 8 серебряных знаков 16 16 бронзовых знаков

radius = 5 center = 10,10 # Первый арг - координата X, вторая Y canvas.create_oval(center[0] - radius, center[1] - radius, center[0] + radius, center[1] + radius, outline=. ) 

Отслеживать

ответ дан 26 мая 2020 в 11:26

Alexander Chernin Alexander Chernin

9,753 9 9 золотых знаков 25 25 серебряных знаков 35 35 бронзовых знаков

Tkinter как нарисовать круг

Блог веб разработки статьи | видеообзоры | исходный код

webfanat вконтакте webfanat youtube

tkinter python рисование

tkinter python рисование

Всем привет! Сегодня мы с вами познакомимся с элементом canvas который переводится как холст. Именно на данном холсте мы можем производить отрисовку различных фигур и текста. Итак, поехали!

Для того чтобы начать отрисовку в окне необходимо создать элемент canvas.

canvas = Canvas(window, width=600,height=600,bg="gray", cursor="pencil")

C помощью виджета canvas у нас создается холст. В него мы передали следующие параметры:

window — главное окно

width, height — ширина и высота холста

bg — заливка холста(gray — серый цвет)

cursor — курсор в фокусе холста(pencil — карандаш)

from tkinter import * window = Tk() window.title('Работа с canvas') canvas = Canvas(window,width=600,height=600,bg="gray", cursor="pencil") canvas.pack() window.mainloop()

Элемент canvas

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

Все теперь мы можем переходить к отрисовке. Начнем с простых линий.

canvas.create_line(0,0,600,600,width=5,fill="yellow") canvas.create_line(0,600,600,0,width=5,fill="yellow")

линии в canvas tkinter

Здесь мы создали две прямых линии. Для их создания воспользовались методом create_line() который принимает в себя следующие параметры.

Первые два параметра это координаты x,y первой точки начало отрезка.

Вторые два параметры это координаты x,y второй точки конец отрезка.

width — толщина линии.

fill — заливка, цвет линии(yellow — желтый).

Для того чтобы на холсте нарисовать прямоугольник или квадрат, нужно воспользоваться методом create_rectangle().

canvas.create_rectangle(50,250,300,500,fill="white",outline="blue")

квадрат в canvas tkinter

C помощью метода create_rectangle()мы нарисовали квадрат. Данный метод принимает в себя следующие параметры:

Первые два параметра координаты левого верхнего угла прямоугольника.

Вторые два параметра координаты правого нижнего угла прямоугольника.

fill — цвет заливки прямоугольника.

outline — цвет рамки прямоугольника.

Теперь переходим к отрисовке эллипсов и кругов.

Для того чтобы нарисовать круг или овал нам достаточно воспользоваться методом create_oval().

canvas.create_oval([400,250],[450,300],fill="pink")

круг в canvas

В основе отрисовки круга с помощью данного метода лежит отрисовка прямоугольника. То есть по сути мы отрисовываем невидимый квадрат куда может быть помещен в полную высоту и ширину квадрат или овал.

Данный метод принимает собой следующие аргументы:

Первые два аргумента в квадратных скобочках координаты x,y левого верхнего угла квадрата.

Вторые два аргумента в квадратных скобочках координаты x, y правого нижнего угла квадрата.

fill — цвет заливки овала.

Для отрисовки более сложных фигур треугольников, многоугольников, многогранников.

Мы можем воспользоваться методом create_polygon().

canvas.create_polygon([400,400],[300,400],[350,300],fill="gray", outline="yellow")

сложные фигуры в canvas

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

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

И напоследок рассмотрим отрисовку текста в canvas.

canvas.create_text(250,280,text="Текст в canvas", font="Verdana 12",justify=CENTER,fill="red")

текст в canvas tkinter

За отрисовку текста в canvas отвечает метод create_text(). В него передаются следующие параметры:

Первые два параметра координаты x, y расположения текста на холсте.

text — текст который мы хотим нарисовать

font — шрифт и размер текста

justify — выравнивание текста(слева, справа, по центру)

fill — цвет текста

Весь написанный за сегодня код выглядит так:

from tkinter import * window = Tk() window.title('Работа с canvas') canvas = Canvas(window,width=600,height=600,bg="gray", cursor="pencil") canvas.create_line(0,0,600,600,width=5,fill="yellow") canvas.create_line(0,600,600,0,width=5,fill="yellow") canvas.create_rectangle(50,250,300,500,fill="white",outline="blue") canvas.create_oval([400,250],[450,300],fill="pink") canvas.create_polygon([400,400],[300,400],[350,300],fill="gray", outline="yellow") canvas.create_text(250,280,text="Текст в canvas", font="Verdana 12",justify=CENTER,fill="red") canvas.pack() window.mainloop()

Отлично! Сегодня мы с вами познакомились с основами рисования canvas библиотеки tkinter.

Если у вас появились какие либо вопросы пишите в группу

или оставляйте их в комментариях к данной статье.

Также у меня есть канал на

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

На этом у меня на сегодня все. Желаю вам успехов и удачи! Пока!

Оцените статью:
Статьи
  • Теги текста HTML
  • CSS before after
  • Геолокация HTML
  • Переменные окружения PHP
  • CSS валидация
  • библиотека tkinter
  • память выделяемая php
  • Linux команды
Комментарии

Внимание. Комментарий теперь перед публикацией проходит модерацию

Евгений

12:00 12-11-2019

Не подскажите как повернуть текст на 90 градусов чтобы подписать ось Y

© 2017-2024 webfanat.com Все права защищены.

Реклама

Запись экрана

Данное расширение позволяет записывать экран и выводит видео в формате webm

Добавить приложение на рабочий стол

Canvas

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

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

Координатная ось

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

from tkinter import * root = Tk() c = Canvas(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()

Метод create_line

Остальные свойства являются необязательными. Так 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))

Метод create_rectangle

Первые координаты – верхний левый угол, вторые – правый нижний. В приведенном примере, когда на второй прямоугольник попадает курсор мыши, его рамка становится пунктирной, что определяется свойством 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')

Метод create_polygon

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

… 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_oval

Более сложные для понимания фигуры получаются при использовании метода 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_arc

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

На холсте можно разместить текст. Делается это с помощью метода 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")

Метод create_text

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

Практическая работа

Создайте на холсте подобное изображение:

Создание изображения на холсте в Tkinter

Для создания травы используется цикл.

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

X Скрыть Наверх

Tkinter. Программирование GUI на Python

Окружности и многоугольники

Для рисования окружностей будем использовать команду t.circle(d).

Синяя окружность радиуса 100:

t.color('blue') t.circle(100)

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

Повернём черепашку на 120 градусов влево и добавим красную окружность:

t.color('blue') t.circle(100) t.left(120) t.color('red') t.circle(100)

Ещё раз повернём черепашку на 120 градусов влево и добавим зелёную окружность:

t.color('blue') t.circle(100) t.left(120) t.color('red') t.circle(100) t.left(120) t.color('green') t.circle(100)

Попробуйте воспроизвести эти примеры и придумать свои!

Многоугольники

Для рисования правильных многоугольников будем использовать команду t.circle(d, 360, n).

Здесь d — радиус описанной окружности, а n — число сторон многоугольника.

t.color('red') t.circle(100, 360, 3)

Два треугольника, перед рисованием второго сделан поворот на 180 градусов:

t.color('red') t.circle(100, 360, 3) t.left(180) t.circle(100, 360, 3)

Синий пятиугольник, n=5:

t.color('blue') t.circle(100, 360, 5)

Синий пятиугольник с радиусом описанной окружности 100, в котором пятугольник меньшего размера, радиус 80:

t.color('blue') t.circle(100, 360, 5) t.circle(80, 360, 5)

Попробуйте воспроизвести эти примеры и придумать свои!

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

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