2014-10-30 5 views
0

Я пытаюсь отобразить положение мыши по таймеру. Я использую winfo_pointerxy(), здесь является частью кода из my_func():рисунок на холсте // python tkinter

curr_x, curr_y = mouseFrame.winfo_pointerxy() 
curr_x = mouseFrame.canvasx(curr_x) 
curr_y = mouseFrame.canvasy(curr_y) 
mouseFrame.create_oval(curr_x, curr_y, curr_x + 5, curr_y + 5, fill='green') 
start_btn.after(time_interval, my_func) 

Похоже, я использую canvasx() неправильно причина она по-прежнему возвращает позицию, считая от левого верхнем углу экрана.

ответ

1

Согласно этому tkinter reference (который я использую постоянно)

Поскольку холст может быть больше, чем окно, и оснащен скроллинга, чтобы переместить общее полотно вокруг в окне, есть две координатных системы для каждого холста:

The window coordinates of a point are relative to the top left 
corner of the area on the display where the canvas appears. 

The canvas coordinates of a point are relative to the top left 
corner of the total canvas. 

Если ваш холст против верхнего левого угла окна (дисплея), и вы не прокручивать холст, то т wo наборы координат должен быть таким же.

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