@Dogrtt
Qt/Python разработчик

Панарамирование изображения правой кнопкой мыши в PyQt5?

Есть приложение, в нем переопределенный 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)

Помогите, пожалуйста.
  • Вопрос задан
  • 226 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы