Tkinter 访问 Canvas Loop 在循环外创建的对象

Tkinter access Canvas Objects created by Loop outside the loop

我正在尝试操作一些由 Tkinter Canvas 上的循环创建的 Canvas 对象。不幸的是,我无法访问循环外这些矩形的坐标,只能访问其中一个。我如何访问循环外部循环创建的所有矩形以获取它们的坐标,以及如何操作它们?这个问题可能没有意义,所以如果你不明白请问我,我会尽力解释得更好。谢谢!

    for y in range(2):
        for x in range(2):
            x1 = x*230
            y1 = y*230
            height = x1 + 200
            width = y1 + 200
            music_catalog_rect = canvas.create_rectangle((x1, y1, height, width), fill='red')
            canvas.move(music_catalog_rect, 180, 20)

您应该将项目存储在某种数据结构中。然后,您可以遍历结构以挑选出特定值或遍历所有值。

例如,您可以将它们存储在列表中:

rects = []
for y in range(2):
    for x in range(2):
        ...
        item = canvas.create_rectangle(...)
        rects.append(item)
        ...

这使您可以轻松地遍历所有项目:

for item in rects:
    canvas.move(item, ...)

如果保留 x,y 数据很重要,您可以将 x,y 用作字典的键:

rects = {}
for y in range(2):
    for x in range(2):
        ...
        item = canvas.create_rectangle(...)
        rects[(x,y)] = item
        ...

然后,您可以执行以下操作:

canvas.move(rects[(3,4)], ...)