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.タプルのリストは正しいですか? Tkキャンバスメソッドであるckhanの観察を反映するように回答を変更していcreate_lineます.ポリゴンはおそらく閉じていません.

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、最初の 2 つの要素をコピーして最後に追加するだけです。

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 に答える