Python,Tkinter:如何使用画布对象的ID或标记来获取所有画布对象的句柄?

Python,Tkinter:如何使用画布对象的ID或标记来获取所有画布对象的句柄?,python,tkinter,tkinter-canvas,Python,Tkinter,Tkinter Canvas,我希望在画布上获得所有矩形的控制柄,并使用特定标记将其放置在网格几何体管理器中(用户可以通过鼠标拖动来移动它们,然后我希望为他“重新排序”)。我没有矩形的句柄,但它们都有相同的标记(“moveable_canvas”)。从那里我可以转换为项目id(.find_with tag),但是现在呢?我可以将ID设置为.itemconfigure等,但是如何“网格化”它们呢 查找对象ID 您可以使用画布上的各种find*方法来查找所有对象。例如,要获取所有对象ID的列表,可以执行以下操作: self.ca

我希望在画布上获得所有矩形的控制柄,并使用特定标记将其放置在网格几何体管理器中(用户可以通过鼠标拖动来移动它们,然后我希望为他“重新排序”)。我没有矩形的句柄,但它们都有相同的标记(“moveable_canvas”)。从那里我可以转换为项目id(.find_with tag),但是现在呢?我可以将ID设置为.itemconfigure等,但是如何“网格化”它们呢

查找对象ID 您可以使用画布上的各种find*方法来查找所有对象。例如,要获取所有对象ID的列表,可以执行以下操作:

self.canv.find_all()
要查找带有给定标记的所有内容,您可以使用
find_withtag
而不是
find_all

self.canv.find_withtag("moveable_canvas")
将它们排列成网格 您说过目标是获取这些对象ID,以便您可以使用
网格
。你不能那样做<代码>网格仅适用于小部件,而不适用于画布对象。没有解决办法。无法将一个转换为另一个


如果你想在网格中排列项目,那么你必须自己计算,并使用
coords
move
画布方法来对齐对象。

为什么不将这些矩形引用放在
列表中
?因为它们是在用户与程序交互时由不同的子类动态生成的。我发现当我需要它们时,使用标签及时搜索它们更容易。好的。我懂了。正如您所说,“网格”只在小部件上工作,而不是画布对象。我会用“移动”来移动他们,用手工数学。
self.canv.find_withtag("moveable_canvas")