Pythonic方式绘制多边形

时间:2012-04-17 04:05:58

标签: iterator draw python polygon

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

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

2 个答案:

答案 0 :(得分:2)

编辑:我想我误解了你的例子,poly是一个正确的元组列表?我正在更改我的答案以反映ckhan's observations 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

答案 1 :(得分: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()