如何重新配置​​tkinter canvas项目?

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)

mgi*_*son 8

你可以使用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)

  • 如果我想改变矩形的坐标? (2认同)
  • 您还可以使用“ coords”方法更改坐标(即:调整其大小)http://effbot.org/tkinterbook/canvas.htm#Tkinter.Canvas.coords-method (2认同)