2012-04-17 73 views
0

具體來說,我有一個列表。我想將這些點連接在一起創建一個多邊形。Pythonic繪製多邊形的方式

最顯而易見的方法做,這是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) 

有沒有辦法做到這一點,是更Python?

+0

我覺得'P2 =聚[我+ 1]'可能會給你一個'IndexError'。 – 2012-04-17 04:18:24

回答

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() 
+0

謝謝,沒有意識到我可以做到這一點。 – themaestro 2012-04-17 14:28:23

2

編輯:我想我誤解了你的例子,poly是一個元組列表是否正確?我正在更改我的答案以反映ckhan's observationscreate_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