如何使用 Tkinter Canvas 绘制形状图案?

How do I draw a pattern of shapes using the Tkinter Canvas?

本质上,我在 canvas 中绘制了一个多边形,我想复制它以填满整个 canvas。

总的来说,我对编程还很陌生,我认为我可以使用 for 循环,但它并没有真正按照我想要的方式运行,所以我很好奇是否有人可以告诉我我该怎么做做到这一点。

代码基本上显示了我想做的事情,但我不想重写这 10 次来填满整个 canvas

首先,你只需要打包canvas一次。

然后您可以使用 for 循环为每个新多边形移动点。一个巧妙的技巧是使用 zip() ,它将这些点与位移列表结合起来,但仅适用于列表中的所有其他项目。示例:

from tkinter import *

root = Tk()
canvas = Canvas()
canvas.pack()

points = [125, 100, 225, 100, 225, 100, 250, 150, 250, 150, 100, 150]    

shift_list = [0, 50, 100, 150]  # values to shift polygon for each repetition

for delta_y in shift_list:
    shifted = []    
    for x, y in zip(points[::2], points[1::2]): # Loop through points
        shifted.append(x)
        shifted.append(y+delta_y)
    canvas.create_polygon(shifted, outline="blue", fill="orange", width=2)

root.mainloop()

行:

for x, y in zip(points[::2], points[1::2])

将获取列表点,但仅获取所有其他项目 points[::2] 并将其与列表点组合,但仅从第二项 points[1::2] 开始的所有其他项目将给出 for 循环 x &每个点的 y 值。这种使用 zip() 的技术非常有用,您应该牢记这一点。

然后只需添加位移值并绘制多边形。