3

マウス クリックに近いタグを特定するにはどうすればよいですか。ここで、私の定義「identify」は、マウスクリックに非常に近いタグを識別する必要があります。

from Tkinter import *
root = Tk()
f=Frame(root)
f.grid()
w=Canvas(f)
line1=w.create_line(50,50,150,150, width=5, tags="line1")
line2=w.create_line(100,100,100,350, width=3, tags="line2")
line3=w.create_line(150,150,150,450, width=3, tags="lines")
w.grid(row=0, column=0)
w.bind("<Button-1>", identify)
def identify(event): ## this should identify the tag near to click

u=Frame(f)
u.grid(row=0, column=1)
root.mainloop()

ありがとう

4

2 に答える 2

6

とを使用find_closestgettagsます。

def identify(event):
    item = w.find_closest(event.x, event.y)[0]
    tags = w.gettags(item)
    print tags

ちなみに、イベントにバインドする前に関数を定義する必要があります。

于 2013-03-22T09:08:54.603 に答える
3

Canvas は一連のfind_*メソッドを提供します。ここで、find_closestあなたのニーズに合わせてください。

def identify(event):
    closest = w.find_closest(event.x,event.y)[0]

キャンバスのビューポートを変更する場合 (パン、ズームなど)、イベント座標からキャンバス座標に変換する必要があることに注意してください。

def callback(event):
    canvas = event.widget
    x = canvas.canvasx(event.x)
    y = canvas.canvasy(event.y)
    print canvas.find_closest(x, y)

( effbot.orgからコピー)

于 2013-03-22T09:07:56.720 に答える