2016-03-08 114 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也一样。 –