具体来说,我有一个点列表。我想将这些点连接在一起以创建多边形。
显而易见的方法是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?
答案 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()