繁体   English   中英

Python:只有一个元素返回为元组,由find_closest返回

[英]Python : Only one element return in tuple return by find_closest

我有这段代码可以创建一个矩形,如果他附近还有其他东西可以说:

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的范围内。这是我不理解或做错的事情吗?

从关于find_closest()的文档开始

find_closest(self,x,y,halo = None,start = None)

返回最接近X,Y像素的项目。如果有多个匹配项,则返回最顶部。 所有比HALO更近的项目都被认为是重叠的(都是最接近的)。 如果指定了START,则采用该标签下的下一个标签。

所以find_closest()只会给您最接近的一项。 如果要在距某个点的距离内找到多个项目(这听起来像您想要的那样),请尝试:

find_overlapping(x1,y1,x2,y2)
查找与给定矩形重叠或完全由给定矩形包围的所有项目。
x1-左边缘。
y1-上边缘。
x2-右边缘。
y2-下边缘。
返回:
包含所有匹配项的元组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM