如何检测对象是否与特定标签重叠?

时间:2017-03-26 15:44:57

标签: python python-3.x tkinter tkinter-canvas

在Python 3.6.0中使用Tkinter,是否有一种'好'的方法来检测特定对象(在本例中是我的播放器精灵)是否与任何其他具有特定标记的对象重叠?

我想做类似的事情:

if canvas.find_overlapping( *canvas.coords(player) ) == (player, "item_tag"):
    return True

其中item_tag是应用于canvas上的100多个对象的标记。

我可以使用canvas.find_withtag("item_tag")返回我希望玩家与之互动的所有对象的对象ID,但我无法在find_overlapping内使用此功能,例如获取每个对象ID,让find_overlapping检测它是否重叠。

谢谢!

1 个答案:

答案 0 :(得分:0)

考虑到两者都是列表,你所要做的就是取一个元素并检查它是否在另一个元素中:

 tagged_objects = canvas.find_withtag("item_tag")
 overlapping_objects = canvas.find_overlapping(*canvas.coords(player))

 for item in overlapping_objects:
     if (item in tagged_objects):
         return True

您可以反过来查看tagged_objects的每个元素是否在overlapping_objects中,但考虑到您说有100多个标记对象,可能会更慢。