2016-03-08 112 views
1

由於某種原因綁定一個函數,發現x和y座標的鼠標點擊事件只是不工作,當我離開點擊絕對沒有任何反應,但如果我喊出來它在實際代碼中的功能運行良好。我嘗試了在這個網站上發佈的其他解決方案,但他們似乎沒有幫助。 使用Python 3.4 這裏是我的確切代碼:Tkinter綁定一個功能鼠標左鍵不起作用

#Import TKINTER toolset: 
from tkinter import * 

#Starting variables: 
#Defining mouse x and y coordinates 
global mouse_x 
global mouse_y 
mouse_x = 0 
mouse_y = 0 

#Main window: 
window = Tk() 

#Workspace and Canvas: 
wrkspace = Frame(window, bg="red",width=640,height=480) 
canvas = Canvas(wrkspace,bg="white",width=640,height=480) 

#Keyframe editor: (DO LATER) 

#Displays mouse x and y on workspace: 
def find_mouse_xy(): 
    mouse_x = wrkspace.winfo_pointerx() 
    mouse_y = wrkspace.winfo_pointery() 
    print ("x: " + str(mouse_x)) 
    print ("y: " + str(mouse_y)) 

wrkspace.bind("<Button-1>",find_mouse_xy) 

wrkspace.pack() 
canvas.pack() 

#Runs window: 
window.mainloop() 
+0

您綁定到一個框架。你是否打算在點擊畫布時使裝訂工作? –

+0

是的,畫布不應該在那裏嗎? – solluu

+0

這是你的畫布,它可以在那裏或不在。關鍵是,只有具有綁定的小部件纔會看到事件。 –

回答

1

Canvas正趕上鼠標事件,但你把它綁定到Frame

嘗試將其綁定到畫布上。

canvas.bind("<Button-1>",find_mouse_xy) 

此外,您將需要爲您的find_mouse_xy()函數,該函數將被傳遞給它的事件的說法。

def find_mouse_xy(event): 
+0

奇妙的是,當我點擊時,函數被調用:)但是,顯示的實際x和y座標不正確。這個我稍微轉動了話題,但是當我點擊畫布的最左上角時,它告訴我x座標是83,y是37時,它們都應該是1. – solluu

+0

那麼也許你應該替換wrkspace.winfo_pointerx()用canvas.winfo_pointerx()。 y也一樣。 –