Рисунок на холсте // питон ткинтер
Я пытаюсь отобразить положение мыши на таймере. Я использую 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.
Если ваш холст находится напротив верхнего левого угла окна (дисплея) и вы не прокручивали холст, два набора координат должны быть одинаковыми.