Python - PyQT - Как обнаружить события мыши при нажатии на текст / точки в растровом изображении

1

Предположим, что я нарисовал простой текст (например, буква "x" ) с некоторыми параметрами шрифта (например, шрифтом 20 и т.д.) на место (x, y) в QLabel, которое содержит QPixmap. Каковы соответствующие методы, которые мне нужно будет переопределить, чтобы обнаружить событие мыши, когда щелчок происходит "точно" над одним из этих нарисованных х.

Мой первый инстинкт заключается в поиске сохраненных (x, y) мест нарисованных точек, и если текущая позиция мыши находится внутри крошечной рамки вокруг этой позиции (x, y), тогда я буду выполнять некоторые функции, например, разрешить пользователь, чтобы настроить эту точку, а если нет, то выполните обычную функцию события мыши. Тем не менее, точки, с которыми я взаимодействую, - это отслеживаемые функции на человеческих лицах, например глаза и т.д. Часто, когда кто-то поворачивается с нечетным углом с камерой и т.д., Две отличные отслеженные точки могут быть в значительной степени верны каждому Другие. Таким образом, независимо от того, насколько хорошо пользователь фокусируется на желаемой ключевой точке, если в логических критериях в обработке событий мыши есть некоторый допуск, будут случаи, когда логика полагает, что нажимаются две разные точки.

Я хочу свести к минимуму эту проблему, не делая необоснованной точности критериев щелчка. Есть ли какой-то принципиально иной способ интерпретации выбора текста (например, когда текст рисуется в pixmap, становится ли какой-либо атрибут этой pixmap, который знает, что текст был нарисован в (x, y) и так, чтобы на что пользователь должен пытаться щелкнуть?)

Любые советы или примеры такого рода в PyQT были бы оценены.

Теги:
image-processing
pyqt

1 ответ

0
Лучший ответ

Хотя вы указали на свои планы взаимодействия с пользователем в своем предыдущем вопросе, теперь ясно, что Graphics View Framework может быть более подходящим для что вы пытаетесь сделать.

Это явно отличается от рисования в виджетах. С помощью этой структуры вы создаете сцену, состоящую из графических элементов (подклассы QGraphicsItem), а затем присваиваете сцену представлению. Через представление вы можете взаимодействовать с элементами в сцене. Они могут генерировать события кликов и даже перемещаться. Документация обширна и выглядит сложной, но концептуально, я думаю, ее легче понять.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню