我这个代码如果他附近还有别的东西,就会创建一个矩形的说法:
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。 这是我不理解或做错的事情吗?
答案 0 :(得分:6)
有关find_closest()
here
find_closest(self,x,y,halo = None,start = None)
返回最接近X,Y像素的项目。 如果几场比赛占据最高位置。 比HALO更接近的所有项目都被认为是重叠的(所有项目都是 closests)。如果指定了START,则会在此标记下方接下来。
所以find_closest()
只会给你一个最近的项目。如果你想在一个点的距离内找到多个项目(这听起来像你想要的那样),试试:
find_overlapping(x1,y1,x2,y2)
查找与给定矩形重叠的所有项目,或者完全由其包围的项目。
x1 - 左边缘。
y1 - 上缘。
x2 - 右边缘。
y2 - 下缘。
返回:
包含所有匹配项的元组。