2013-03-22 76 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