2

彼の近くに何か他のものがある場合、私は長方形を作成するこのコードを持っています:

def creaRect(event):
    #rect = Rectangle.Rectangle(canvas, event, CanWidth=Width, CanHeight=Height)
    width, height = 25, 25
    x, y = event.x, event.y
    x1 = int(x-width/2)
    y1 = int(y-height/2)
    x2 = int(x+width/2)
    y2 = int(y+height/2)
    rect = canvas.create_rectangle((x1, y1, x2, y2), outline="red", width=1, tags="bloc")
    Rectangle.OidRect.append(rect)

    near = canvas.find_closest(x, y, 200)
    print(len(near))

しかし、find_closest によって返されるタプルの長さは毎回 1 ですが、同じ位置または実際に近くに多くの長方形を作成します。私にとって find_closest は、x、y座標の周りのすべてのアイテムのIDを200の範囲で持つタプルを返す必要があります。それは私が理解できない、または間違っていることですか?

4

1 に答える 1

6

ここについてのドキュメントからfind_closest()

find_closest(self, x, y, halo=なし, start=なし)

X、Y でピクセルに最も近いアイテムを返します。複数の一致がある場合は、一番上のものを取ります。HALO よりも近いすべての項目は重複していると見なされます (すべてが最も近い)。START が指定されている場合、このタグの次のタグが取得されます。

そのfind_closest()ため、最も近いアイテムを 1 つだけ提供します。ポイントからの距離内に複数のアイテムを見つけたい場合 (これはあなたが目指していたように聞こえます) 試してください:

find_overlapping(x1, y1, x2, y2)
指定された四角形に重なっている、または四角形に完全に囲まれているすべてのアイテムを検索します。
x1 - 左端。
y1 - 上端。
x2 - 右端。
y2 - 下端。
戻り値:
一致するすべてのアイテムを含むタプル。

于 2013-01-25T20:53:12.717 に答える