5

この質問に重複があるかどうかはわかりませんが、まだ見つかりません。

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...)
4

2 に答える 2

16

使用できます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()
于 2012-11-03T19:06:03.123 に答える