首页 > 解决方案 > 创建 Tkinter 的 Canvas 绘图列表

问题描述

有没有办法附加到在 Tkinter 的画布上创建的列表图纸?我正在尝试这段代码

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()

每次我按下按钮时,列表不会附加画布对象,而是附加一个整数,l如下所示:

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

如何实现?

标签: pythontkintercanvas

解决方案


在 a 上创建对象时tk.Canvastk.Canvas返回对象的 id (a python int)。这唯一地引用了该对象。这些 id 永远不会被重用,并且可以在许多tk.Canvas功能中使用,例如:

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

当调用这些函数中的任何一个时,您应该将对象 id 作为第一个参数传递。


推荐阅读