Хотя вы не можете получить пересечения из tkinter
, вы можете вместо этого сделать треугольники с парой петель for
и затем нанести их на холст. Пример будет выглядеть так:
import tkinter as tk
import random
def make_triangles(row_height=60, tri_width=60, max_height=1800, max_width=1800):
triangle_list = []
half_width = int(tri_width/2)
for i in range(0, max_height, row_height):
for j in range(0, max_width, half_width):
if j % tri_width == 0:
triangle = (i, j-half_width, i+row_height, j, i, j+half_width)
else:
triangle = (i, j, i+row_height, j+half_width, i+row_height, j-half_width)
triangle_list.append(triangle)
return triangle_list
win = tk.Tk()
canv = tk.Canvas(win)
triangles = make_triangles()
for tri in triangles:
canv.create_polygon(tri, fill=random.choice(["blue", "red", "green", "brown", "yellow", "black"]))
canv.pack()
win.mainloop()
Где мы просто генерируем много треугольников и затем последовательно наносим их на холст (нам не нужно находить каждую вершину вручную, просто формула, которая бы описывала их все). Хотя это не решает вашу конкретную проблему в том смысле, что треугольники не пересекаются (вам придется сдвигать каждую вторую строку на половину треугольника), а треугольники влево / вправо, а не вверх / вниз, это делает ответьте на ваш вопрос " Есть ли ярлык для создания множества полигонов с помощью tkinter "! Ответ заключается в том, чтобы просто составить список ваших полигонов, а затем построить их все. Пример вывода (ваш будет отличаться, потому что он случайный) моего кода выглядит так:
