0

具体来说,我有一个点列表。我想将这些点连接在一起以创建一个多边形。

显而易见的方法是 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的方法?

4

2 回答 2

2

编辑:我想我误解了你的例子,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
于 2012-04-17T04:19:54.573 回答
2

好吧,既然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()
于 2012-04-17T04:26:33.343 回答