0

Tkinter/Pythonでキャンバスに描いた線をマウスクリックで消したいです。

このコードは、線をオブジェクトとして描画し、すぐに削除します。

#!/usr/bin/python
from Tkinter import *

master = Tk()
w = Canvas(master, width=200, height=200)
w.pack()
i=w.create_line(0, 0, 100, 100)
w.delete(i)

mainloop()

マウスクリックで行を削除するコードは何ですか (左ボタンまたは右ボタンは関係ありません)。

ありがとう。

4

2 に答える 2

1

これはそれを行います:

from Tkinter import *

master = Tk()
w = Canvas(master, width=200, height=200)
w.pack()
i=w.create_line(0, 0, 100, 100)

# Bind the mouse click to the delete command
w.bind("<Button-1>", lambda e: w.delete(i))

mainloop()

コメントに応じて編集:

はい、上記のソリューションは、ウィンドウ内の任意の場所でのマウス クリックを登録します。クリックが近くにある場合にのみ行を削除する場合は、より複雑なものが必要になります。つまり、次のようなものです。

from Tkinter import *

master = Tk()
w = Canvas(master, width=200, height=200)
w.pack()
i=w.create_line(0, 0, 100, 100)

def click(event):
    # event.x is the x coordinate and event.y is the y coordinate of the mouse
    if 80 < event.x < 120 and 80 < event.y < 120:
        w.delete(i)

w.bind("<Button-1>", click)

mainloop()

このスクリプトは、マウス クリックの座標が線の 20 ポイント以内にある場合xにのみ線を削除します。y

これを完全に設定することはできません。必要に応じて微調整する必要があります。

于 2013-09-25T21:43:14.507 に答える