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 对象。没有解决方法。无法将一种转换为另一种。
如果您想将项目排列在网格中,则必须自己进行数学运算,并使用 coords
或 move
canvas 方法来对齐对象。
我想获取 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 对象。没有解决方法。无法将一种转换为另一种。
如果您想将项目排列在网格中,则必须自己进行数学运算,并使用 coords
或 move
canvas 方法来对齐对象。