5

我不知道这个问题是否有重复,但我还没有找到。

使用 python 时,您可以快速创建 GUI,但有时您找不到执行所需操作的方法。例如我有以下问题:

假设有一个名为 K 的画布,其中有一个 ID=1(canvas item id , not memory id) 的矩形。

如果我想重绘项目,我可以删除它,然后用新设置重绘它。

K.delete(1)
K.create_rectangle(x1,y1,x2,y2,options...)

这是问题所在:对象ID发生了变化;我如何重绘、移动或调整矩形的大小,或者在不使用方法更改其 id 的情况下简单地更改它?例如:

K.foo(1,options....)

如果没有这样的方法,那么我应该创建一个带有画布对象 ids 的列表,但它不优雅也不快。例如:

ItemIds=[None,None,etc...]
ItemIds[0]=K.create_rectangle(old options...)
K.delete(ItemIds[0])
ItemIds[0]=K.create_rectangle(new options...)
4

2 回答 2

16

您可以使用Canvas.itemconfig

item = K.create_rectangle(x1,y1,x2,y2,options...)
K.itemconfig(item,options)

要移动项目,您可以使用Canvas.move


import Tkinter as tk

root = tk.Tk()
canvas = tk.Canvas(root)
canvas.pack()
item = canvas.create_rectangle(50, 25, 150, 75, fill="blue")

def callback():
    canvas.itemconfig(item,fill='red')

button = tk.Button(root,text='Push me!',command=callback)
button.pack()

root.mainloop()
于 2012-11-03T19:06:03.123 回答
1

我四处搜索,找到了调整大小的完美 Tkinter 方法。canvas.coords() 可以解决问题。只需给它你的新坐标,它就“很好”。Python 3.4
PS。不要忘记第一个参数是 id。

于 2015-07-10T03:33:41.417 回答