创建 Tkinter 的 Canvas 绘图列表

Create a list of Tkinter's Canvas drawings

有没有办法附加到在 Tkinter canvas 上创建的列表绘图?我正在尝试此代码

from tkinter import *

l = []

def f(c):
    l.append(c.create_oval(10, 10, 200, 300, width=2, fill="red"))
    print(l)

root = Tk()
c = Canvas(root)
c.pack(fill=BOTH)
b = Button(root, text="BOTON", command=lambda: f(c))
b.pack()
root.mainloop()

每次我按下按钮时,列表不会附加一个 canvas 对象,而是附加一个整数,这样 l 看起来像这样:

[1]
[1, 2]
[1, 2, 3]
...
[1, 2, 3, ..., n]

如何实现?

tk.Canvas 上创建对象时,tk.Canvas returns 对象的 ID (a python int)。唯一引用该对象。这些 ID 永远不会被重复使用,并且可以在许多 tk.Canvas 函数中使用,例如:

  • <tk.Canvas>.move(...)
  • <tk.Canvas>.moveto(...)
  • <tk.Canvas>.delete(...)
  • <tk.Canvas>.itemconfig(...)

调用任何这些函数时,您应该将对象 ID 作为第一个参数传入。