Python,Tkinter:如何使用其 ID 或标签获取所有 canvas 对象的句柄?

Python, Tkinter: How to get the handle of all canvas objects using their IDs or tags?

我想获取 canvas 上所有带有特定标签的矩形的句柄,以便使用网格几何管理器放置它们(用户可以通过鼠标拖动来移动它们,然后我想"reorder" 他们为他)。我没有矩形的手柄,但它们都有相同的标签 ("moveable_canvas")。从那里我可以转换为项目 ID (.find_withtag),但现在怎么办?我可以将 ID 添加到 .itemconfigure 等,但是如何 "grid" 它们?

moveable_canvases = self.canv.find_withtag("moveable_canvas")
for canvas_id in moveable_canvases:
    ???.grid(...)

查找对象 ID

您可以使用 canvas 的各种 find* 方法来查找所有对象。例如,要获取所有对象 ID 的列表,您可以这样做:

self.canv.find_all()

要查找具有给定标签的所有内容,您将使用 find_withtag 而不是 find_all:

self.canv.find_withtag("moveable_canvas")

将它们排列成网格

你说的目的是获取这些对象id,这样你就可以使用grid。你不能这样做。 grid 仅适用于小部件,不适用于 canvas 对象。没有解决方法。无法将一种转换为另一种。

如果您想将项目排列在网格中,则必须自己进行数学运算,并使用 coordsmove canvas 方法来对齐对象。