2013-03-22 48 views
2

如何识别靠近鼠标点击的标签。这里我的定义“识别”应该标识非常接近鼠标点击的标签。如何在tkinter python gui中找到鼠标点击附近的标签

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() 

由于

回答

5

使用find_closestgettags

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

顺便说一下,您必须在将它绑定到事件之前定义函数。

3

帆布提供一堆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复制)

+0

谢谢真的很有用 – lokesh 2013-03-25 05:37:45