Глава 18 · Canvas по-настоящему

Система координат Canvas

Левый верхний угол — начало координат. X растёт вправо, Y — вниз. Не как у Turtle.

Координаты растут вправо и вниз

У Canvas точка (0, 0) — левый верхний угол. Первая координата (X) растёт вправо, вторая (Y) — вниз. Любая фигура задаётся через точки в этой системе:

X →Y ↓(0, 0)P1 (40, 30)P2 (160, 120)
Прямоугольник по двум противоположным углам P1 и P2 — ровно то, что делает create_rectangle(P1x, P1y, P2x, P2y).
Реальное окно: холст с подписанными точками и линией между ними, показывающими рост координат вправо и вниз
Реальное окно: две точки и линия между ними — движение мыши вправо увеличивает x, движение вниз увеличивает y.

Turtle vs Canvas — сравним в лоб

Если до этой главы вы рисовали Turtle (главы 6–7), интуиция может подвести: там начало координат — центр экрана, а Y растёт вверх, как в математике на бумаге. У Canvas — иначе, и это не «более правильная» или «менее правильная» система, а просто другое соглашение, которое Tkinter унаследовал от оконных систем, где строки экрана нумеруются сверху вниз.

Canvas (Tkinter)
XY
Начало координат — левый верхний угол, Y растёт ВНИЗ
Turtle (главы 6–7)
XY
Начало координат — центр экрана, Y растёт ВВЕРХ
event.x / event.y — те же координаты, что и у самого Canvas
Координаты события мыши (глава 17 — event.x, event.y) и координаты, которые принимает create_*, — одна и та же система: пиксели относительно левого верхнего угла холста. Именно поэтому canvas.create_line(start_x, start_y, event.x, event.y) работает без какого-либо пересчёта.
Практика: координаты Canvas
Автоматическая проверка — определяем направление движения курсора по координатам Y
Открыть практику →