エグゼクティブサマリー
キャンバス メソッドはタグまたはアイテム ID を区別なく受け入れるため、コンパクトなコールバックを使用できます。
def autodestroy(event):
event.widget.delete("current")
詳細
コールバックは Tkinterイベントを一意のパラメーターとして受け取ります。このパラメーターは、刺激されたウィジェットやその他の情報 (マウス イベントの場合はマウス座標またはボタン) を取得できるオブジェクトです。
def clicked(event):
canvas = event.widget
クリックされたキャンバスアイテムを取得するには、 CURRENT
1タグを使用できます。
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"
同等