创建 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 作为第一个参数传入。
有没有办法附加到在 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 作为第一个参数传入。