Есть приложение, в нем переопределенный QGraphicsView, а в нем изображение. Необходимо по нажатию левой кнопки мыши на изображение, вызывать функцию pixelSelect, которая определяет цвет пикселя, по которому кликнули и его местоположение(В примере ниже, не весь код). При зажатии правой кнопки, необходимо включать режим QGraphicsView.ScrollHandDrag, для панарамирования. Понимаю, что алгоритм должен быть примерно таким. При инициализации - режим:
self.setDragMode(QGraphicsView.ScrollHandDrag)
self.mousePressEvent = self.pixelSelect
Затем, отлавливаем нажатие правой кнопкой и переводимся в режим:
self.setDragMode(QGraphicsView.ScrollHandDrag)
Пробую как-то так, но ухожу в рекурсию из за self._photo.mousePressEvent(event):
def set_pixmap(self, msg, w_img, h_img):
self._zoom = 0
self.qImg = QImage(msg, w_img, h_img, w_img, QImage.Format_Grayscale8)
self._photo = QGraphicsPixmapItem(QPixmap(self.qImg))
self._photo.mousePressEvent = self.pixelSelect
self._scene.addItem(self._photo)
def pixelSelect(self, event):
if event.button() == 1:
self.setDragMode(QGraphicsView.NoDrag)
position = QPoint(event.pos().x(), event.pos().y())
print position
else:
self.setDragMode(QGraphicsView.ScrollHandDrag)
self._photo.mousePressEvent(event)
Помогите, пожалуйста.