Как нарисовать круг используя только линии в tkinter?
import turtlen = 0 for s in range(5): i = 0 while i < 361: turtle.width(2) turtle.fd(0.5 + n) turtle.left(1) i += 1 n += 0.5 turtle.penup() turtle.goto(-350, -25 - s * 25) turtle.pendown() turtle.exitonclick() вот например я с помощью черепашки делаю круг маленькими линиями
12 окт 2020 в 21:11
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
import math from tkinter import * class App: def __init__(self, master): self.w = Canvas(width=400, height=400, bg='black') self.w.draw_regular_polygon((200,200), 100, 15, 0, outline='red') self.w.grid(row=0, column=0) def _draw_regular_polygon(self, center, radius, n, angle, **kwargs): angle -= (math.pi/n) coord_list = [[center[0] + radius * math.sin((2*math.pi/n) * i - angle), center[1] + radius * math.cos((2*math.pi/n) * i - angle)] for i in range(n)] return self.create_polygon(coord_list, **kwargs) Canvas.draw_regular_polygon = _draw_regular_polygon root = Tk() app = App(root) root.mainloop()
Отслеживать
ответ дан 12 окт 2020 в 22:19
73.1k 109 109 золотых знаков 38 38 серебряных знаков 55 55 бронзовых знаков
@Maxim я ответил на ваш вопрос?
13 окт 2020 в 13:24
@Maxim Если мой ответ помог вам, то не забудьте пометить как правильный, если вы не знаете, как это сделать, проверьте ru.stackoverflow.com/tour
Окружности и многоугольники
Для рисования окружностей будем использовать команду 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)
Попробуйте воспроизвести эти примеры и придумать свои!
Как построить круги в Matplotlib (с примерами)
Вы можете быстро добавить круги на график в Matplotlib с помощью функции Circle() , которая использует следующий синтаксис:
matplotlib.patches.Circle (ху, радиус = 5)
- xy: координаты (x, y) окружности.
- радиус: Радиус круга. По умолчанию 5.
В этом руководстве показано несколько примеров использования этой функции на практике:
Пример 1: создание одного круга
В следующем коде показано, как создать один круг на графике Matplotlib, расположенном в координатах (x, y) (10,10):
import matplotlib.pyplot as plt #set axis limits of plot (x=0 to 20, y=0 to 20) plt.axis([0, 20, 0, 20]) #create circle with (x, y) coordinates at (10, 10) c=plt.Circle ((10, 10)) #add circle to plot (gca means "get current axis") plt.gca ().add_artist (c)
По умолчанию одна ось графика Matplotlib обычно отображает больше пикселей на единицу данных. Чтобы круг выглядел как круг, а не как эллипс, вам нужно использовать аргумент plt.axis(«equal») следующим образом:
import matplotlib.pyplot as plt #set axis limits of plot (x=0 to 20, y=0 to 20) plt.axis([0, 20, 0, 20]) plt.axis (" equal ") #create circle with (x, y) coordinates at (10, 10) c=plt.Circle ((10, 10)) #add circle to plot (gca means "get current axis") plt.gca ().add_artist (c)
Пример 2. Создание нескольких кругов
Следующий код показывает, как создать несколько кругов на графике Matplotlib:
import matplotlib.pyplot as plt #set axis limits of plot (x=0 to 20, y=0 to 20) plt.axis([0, 20, 0, 20]) plt.axis (" equal ") #define circles c1=plt.Circle ((5, 5), radius= 1 ) c2=plt.Circle ((10, 10), radius= 2 ) c3=plt.Circle ((15, 13), radius= 3 ) #add circles to plot plt.gca ().add_artist (c1) plt.gca ().add_artist (c2) plt.gca ().add_artist (c3)
Пример 3: изменение внешнего вида круга
Вы можете использовать следующие аргументы, чтобы изменить внешний вид круга в Matplotlib:
- радиус: укажите радиус круга
- цвет: укажите цвет круга
- альфа: указать прозрачность круга
В следующем коде показан пример одновременного использования нескольких таких аргументов:
import matplotlib.pyplot as plt #set axis limits of plot (x=0 to 20, y=0 to 20) plt.axis([0, 20, 0, 20]) plt.axis (" equal ") #create circle with (x, y) coordinates at (10, 10) c=plt.Circle ((10, 10), radius= 2 , color='red', alpha= .3 ) #add circle to plot (gca means "get current axis") plt.gca ().add_artist (c)
Обратите внимание, что вы также можете использовать пользовательские шестнадцатеричные коды цветов, чтобы указать цвет кругов.
Круг, многоугольник, точка в модуле turtle Python
В материале представлены команды, отвечающие за рисование круга, многоугольника и точки в модуле turtle Python.
Примечание: можно использовать как функции модуля, так и одноименные методы экземпляра пера/холста. например:
>>> import turtle # функция модуля >>> turtle.circle(100) # создание экземпляра пера >>> pen = turtle.Turtle() >>> pen.circle(100)
Содержание:
- turtle.circle() рисует круг/овал/многоугольник,
- turtle.dot() рисует круглую точку,
turtle.circle(radius, extent=None, steps=None) :
Метод turtle.circle() рисует круг заданного радиуса radius . Центр круга будет слева от пера черепахи на расстоянии радиуса radius .
Аргумент extent — это угол, который определяет, какая часть круга будет нарисована. Если extent не указан, то рисует весь круг. Если extent не является полным кругом (360), то одна конечная точка дуги является текущим положением пера. Если радиус положительный, то рисует дугу против часовой стрелки, в противном случае — по часовой стрелке.
Направление черепахи изменяется на величину extent .
Так как круг аппроксимируется вписанным правильным многоугольником, аргумент steps определяет количество используемых шагов. Если steps не указан, то он будет рассчитан автоматически. Может использоваться для рисования правильных многоугольников.
- radius — число ( int или float ).
- extent — число ( int или float ). или None .
- steps — целое число int или None .
>>> import turtle >>> pen = turtle.Turtle() # позиция пера до рисования >>> pen.position() # (0.00,0.00) # направление пера до рисования >>> pen.heading() # 0.0 # рисуем круг >>> pen.circle(50) # позиция пера после рисования >>> pen.position() # (-0.00,0.00) # направление пера после рисования >>> pen.heading() # 0.0
>>> import turtle >>> pen = turtle.Turtle() # рисуем полукруг >>> pen.circle(120, 180) # позиция пера после рисования >>> pen.position() # (0.00,240.00) # направление пера после рисования >>> pen.heading() # 180.0
Рисуем пятиугольник и шестиугольник:
>>> import turtle >>> pen = turtle.Turtle() >>> pen.home() # рисуем пятиугольник >>> pen.circle(150, steps=5) # рисуем шестиугольник >>> pen.circle(200, steps=6)
>>> import turtle >>> pen = turtle.Turtle() def talloval(pen, r): """Вертикальный овал""" pen.left(45) for _ in range(2): # длинная изогнутая часть pen.circle(r,90) # короткая изогнутая часть pen.circle(r/2,90) def flatoval(pen, r): """Горизонтальный овал""" pen.right(45) for _ in range(2): pen.circle(r,90) pen.circle(r/2,90) >>> pen.clear() >>> talloval(pen, 50) >>> pen.home() >>> flatoval(pen, 50)
Для рисования овала можно воспользоваться настройкой формы круглого пера turtle.shape(«circle») и turtle.shapesize(5,4,1) :
>>> import turtle >>> pen = turtle.Turtle() >>> pen.shape("circle") >>> pen.shapesize(5,4,1) >>> pen.fillcolor("white")
turtle.dot(size=None, *color) :
Метод turtle.dot() рисует круглую точку с диаметром size , используя цвет color .
Если размер диаметра size не указан, то используется максимум: pensize + 4 и 2 * pensize .
- size — целое число int >= 1.
- color — строка (например ‘blue’ ) или кортеж (73, 15, 128) , означающая цвет RGB.
>>> import turtle >>> turtle.home() >>> turtle.dot() >>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50) >>> turtle.position() # (100.00,-0.00) >>> turtle.heading() # 0.0
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Рисование/передвижение пера по холсту, модуль turtle
- Поднять/опустить перо при движении в модуле turtle Python
- Скрыть/показать перо на холсте в модуле turtle Python
- Толщина пера и его форма, модуль turtle
- Цвет пера/карандаша и цвет заливки в модуле turtle Python
- Смена позиции пера на холсте в модуле turtle Python
- Сведения о позиции пера на холсте в модуле turtle
- Круг, многоугольник, точка в модуле turtle Python
- Копия формы пера, модуль turtle Python
- Очистка рисунка активного пера в модуле turtle Python
- Функция write() модуля turtle, вывод текста на холсте
- События мыши для пера в модуле turtle
- События клавиатуры и мыши для холста в модуле turtle Python
- Вызвать диалоговое окно в модуле turtle
- Управление холстом/экраном в модуля turtle
- Управление анимацией пера в модуля turtle Python
- Специальные методы пера модуля turtle
- Настройки и специальные методы холста модуля turtle