具体来说,我有一个点列表。我想将这些点连接在一起以创建一个多边形。
显而易见的方法是 C 风格:
39 def drawPoly(poly):
40 for i in range(0, len(poly)):
41 p1 = poly[i]
42 p2 = poly[i + 1]
43 canvas.create_line(blah)
有没有一种更pythonic的方法?
编辑:我想我误解了你的例子,poly
元组列表是否正确?我正在更改我的答案以反映ckhan 的观察结果,create_line
即 Tk 画布方法,并且您的多边形可能没有关闭。
def drawPoly(poly):
x1 = y1 = None
for x2, y2 in poly + poly[0]:
if x1 is not None:
canvas.create_line(x1, y1, x2, y2)
x1, y1 = x2, y2
好吧,既然create_line
可以获取点列表,您需要做的就是复制前两个元素并在最后填充它们:
from Tkinter import Tk, Canvas, mainloop
master = Tk()
points = [10, 10, 50, 10, 50, 50, 10, 50 ]
c = Canvas(master, width=200, height=100)
c.pack()
c.create_line(points + points[0:2], fill = "red")
mainloop()