Alb*_*lla 2 python user-interface tkinter
我不知道这个问题是否有重复,但我还没有找到.
使用python时,你可以快速创建GUI,但有时你找不到一个方法来做你想要的.例如,我有以下问题:
让我们假设有一个名为K的画布,其中有一个ID = 1(画布项id,而不是内存id)的矩形.
如果我想重绘项目,我可以删除它,然后用新设置重绘它.
K.delete(1)
K.create_rectangle(x1,y1,x2,y2,options...)
Run Code Online (Sandbox Code Playgroud)
这是问题:对象id改变; 如何重绘或移动或调整矩形大小或只是更改它而不用方法更改其ID?例如:
K.foo(1,options....)
Run Code Online (Sandbox Code Playgroud)
如果没有这样的方法,那么我应该用canvas对象id创建一个列表,但它不优雅而且不快.例如:
ItemIds=[None,None,etc...]
ItemIds[0]=K.create_rectangle(old options...)
K.delete(ItemIds[0])
ItemIds[0]=K.create_rectangle(new options...)
Run Code Online (Sandbox Code Playgroud)
你可以使用Canvas.itemconfig:
item = K.create_rectangle(x1,y1,x2,y2,options...)
K.itemconfig(item,options)
Run Code Online (Sandbox Code Playgroud)
要移动项目,您可以使用 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()
Run Code Online (Sandbox Code Playgroud)