Tkinter - Получение координат x, y объекта Label - PullRequest
0 голосов
/ 13 мая 2019

Я определил Label объект как:

panel = Label(image_frame, image=self.img, cursor="cross")

Теперь я хотел бы нарисовать многоугольник поверх этого, и я создал функцию с именем draw(), которая привязывается к холсту и позволяет рисовать многоугольник поверх него. Итак, я знаю, что моя команда draw() работает.

Однако мне нужно сделать это поверх панели, которую я обозначил как Метка. Самая большая проблема, с которой я столкнулся - это строка в моей команде draw()

if event.widget.canvasx(event.x)-2 < orig_x < event.widget.canvasx(event.x)+2 and event.widget.canvasy(event.y)-2 < orig_y < event.widget.canvasy(event.y)+2 :

Я выдаю следующую ошибку:

AttributeError: у объекта «Метка» нет атрибута «canvasx»

Есть ли аналог для canvasx для Label объекта? Как я могу обойти это без изменения Label? Или меняет Label на холст, мой единственный вариант?

Единственное, о чем я могу думать, это иметь прозрачный холст позади Label, но тогда on-resize, все становится грязным.

1 Ответ

1 голос
/ 13 мая 2019

Есть ли аналог для canvasx для объекта Label?Как я могу обойти это без изменения метки?Или меняет метку на холст мой единственный вариант?

Нет, потому что в этом нет необходимости.canvasx существует, потому что холст можно прокручивать в любом направлении, и вам нужно иметь возможность преобразовывать координаты виджета во внутренние координаты холста.

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


Примечание. Невозможно встроить виджет метки (или любой другой виджет) на холст, а затем нарисовать поверх метки.Официальная документация по холсту говорит об этом:

Примечание: из-за ограничений в способах управления окнами невозможно рисовать другие графические элементы (такие как линии и изображения) поверхэлементы окна.Элемент окна всегда скрывает любую графику, которая перекрывает его, независимо от их порядка в списке отображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...