2016-03-08 3 views
1

по какой-либо причине привязка функции, которая находит координаты x и y для события щелчка мыши, просто не работает, когда я оставил клик, абсолютно ничего не происходит, но если я вызову функция в реальном коде работает нормально. Я пробовал другие решения, размещенные на этом сайте, но они, похоже, не помогли. с помощью питона 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. –

Смежные вопросы