エグゼクティブサマリー
キャンバス メソッドはタグまたはアイテム ID を区別なく受け入れるため、コンパクトなコールバックを使用できます。
def autodestroy(event):
event.widget.delete("current")
詳細
コールバックは Tkinterイベントを一意のパラメーターとして受け取ります。このパラメーターは、刺激されたウィジェットやその他の情報 (マウス イベントの場合はマウス座標またはボタン) を取得できるオブジェクトです。
def clicked(event):
canvas = event.widget
クリックされたキャンバスアイテムを取得するには、 CURRENT1タグを使用できます。
rect = canvas.find_withtag("current")[0]
find_closestまたは、find_overlapping、find_enclosed...でピッキングを再現します( effbot.orgからコピー)
canvas = event.widget
x = canvas.canvasx(event.x)
y = canvas.canvasy(event.y)
rect = canvas.find_closest(x, y)[0]
find_ファミリが返すタプルは、状況によっては空になる可能性があり、空であることをテストしたり、例外をキャッチしたりする可能性があることに注意してください。
次に、キャンバスのアイテムcanvas.deleteを削除するには、メソッドを使用できます。
canvas.delete(rect)
キャンバス メソッドはタグまたはアイテム ID を区別なく受け入れるため、よりコンパクトな記述を使用できます。
def autodestroy(event):
event.widget.delete("current")
1 Tkinter.CURRENTと"current"同等