Как нарисовать круг используя только линии в tkinter?
Через функцию create_oval легко, но линиями не получается
import turtle
n = 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()
Ответы (2 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
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()
Автор решения: MiniMax
→ Ссылка
import tkinter as tk
from math import cos, sin, radians
root = tk.Tk()
canvas = tk.Canvas(root, width=400, height=400)
x_offset = 200
y_offset = 200
radius = 100
coords = [ (radius * cos(radians(angle)), radius * sin(radians(angle))) for angle in range(360)]
# Замыкаем круг путём добавления первой координаты в конец списка.
# Иначе будет разрыв между последней и первой точкой.
coords.append(coords[0])
for (x1, y1), (x2, y2) in zip(coords, coords[1:]):
canvas.create_line(x_offset + x1, y_offset + y1, x_offset + x2, y_offset + y2, width=3)
Результат

