Рисунок на холсте // питон ткинтер

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

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 (которой я пользуюсь постоянно)

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

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.

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

Другие вопросы по тегам