我不知道这个问题是否有重复,但我还没找到。
使用python时,您可以快速创建GUI,但有时您无法找到执行所需操作的方法。例如,我有以下问题:
让我们假设有一个名为K的画布,其中包含一个ID = 1(画布项ID,而不是内存ID)的矩形。
如果我想重新绘制项目,我可以将其删除,然后使用新设置重新绘制。
K.delete(1)
K.create_rectangle(x1,y1,x2,y2,options...)
这是问题:对象id改变;如何重绘或移动或调整矩形大小或只是更改它而不用方法更改其ID?例如:
K.foo(1,options....)
如果没有这样的方法,那么我应该创建一个包含画布对象id的列表,但它不优雅且不够快。例如:
ItemIds=[None,None,etc...]
ItemIds[0]=K.create_rectangle(old options...)
K.delete(ItemIds[0])
ItemIds[0]=K.create_rectangle(new options...)
答案 0 :(得分:7)
您可以使用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()
答案 1 :(得分:1)
我四处搜索并找到了完美的Tkinter方法来调整大小。 canvas.coords()可以解决问题。只需给它你的新坐标,这是“很好的去”。 Python 3.4
PS。不要忘记第一个参数是id。