如何重新配置tkinter画布项?

2024-04-24 11:16:20 发布

您现在位置:Python中文网/ 问答频道 /正文

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

使用python时,您可以快速创建GUI,但有时您找不到方法来完成您想要的工作。例如,我有以下问题:

假设有一个名为K的画布,其中有一个ID=1(画布项ID,而不是内存ID)的矩形。

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

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

这里的问题是:对象id改变了;我怎样才能重绘、移动或调整矩形的大小,或者仅仅改变它而不使用方法改变它的id?例如:

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

如果没有这样的方法,那么我应该创建一个包含canvas对象id的列表,但是它不优雅,也不快速

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

Tags: 对象方法noneid画布地方creategui
2条回答

我四处寻找,找到了完美的Tkinter调整大小的方法。canvas.coords()起作用。只要给它你的新坐标,它“很好去”。Python3.4
别忘了第一个参数是id

您可以使用^{}

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

要移动项目,可以使用^{}


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()

相关问题 更多 >