Python - PyQT - Как обнаружить события мыши при нажатии на текст / точки в растровом изображении - PullRequest
1 голос
/ 03 июня 2011

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

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

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

Буду очень признателен за любые советы или примеры такого рода вещей в PyQT.

1 Ответ

0 голосов
/ 03 июня 2011

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

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

...