具體來說,我有一個列表。我想將這些點連接在一起創建一個多邊形。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?
具體來說,我有一個列表。我想將這些點連接在一起創建一個多邊形。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?
那麼,既然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()
謝謝,沒有意識到我可以做到這一點。 – themaestro 2012-04-17 14:28:23
編輯:我想我誤解了你的例子,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
我覺得'P2 =聚[我+ 1]'可能會給你一個'IndexError'。 – 2012-04-17 04:18:24