如何重新配置​​tkinter画布项目?

时间:2012-11-03 18:42:41

标签: python user-interface tkinter

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

使用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...)

2 个答案:

答案 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。