【问题标题】:How to detect if an object is overlapping with specific tag?如何检测对象是否与特定标签重叠?
【发布时间】:2017-03-26 15:44:56
【问题描述】:

在 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 检测它是否重叠。

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

     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 多个标记对象,这可能会更慢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-17
      • 1970-01-01
      相关资源
      最近更新 更多