python - pyqt获取图像位置

标签 python pyqt qgraphicsview qgraphicsscene

我有一个 QGraphicsscene,上面有一张图片 QPixmap 到 QGraphicsView 中。我决定使用 QPixmap QGraphicsItem.ItemIsMovable。我想获取图片移动时的位置。我该如何做到这一点?

最佳答案

如果您只想知道当前图像位置,可以从 pixmapItem.pos()pixmapItem.x()pixmapItem.y 接收它().

但是如果您需要知道,当它被移动时,您可以子类化QGraphicsPixmapItem,设置QGraphicsItem.ItemSendsGeometryChanges标志,并在覆盖的itemChange<中接收通知功能:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtCore, QtGui


class MovablePixmapItem(QtGui.QGraphicsPixmapItem):
    def __init__(self, pixmap, *args, **kwargs):
        QtGui.QGraphicsPixmapItem.__init__(self, pixmap, *args, **kwargs)
        self.setFlags(QtGui.QGraphicsItem.ItemIsMovable |
                      QtGui.QGraphicsItem.ItemSendsGeometryChanges)

    def itemChange(self, change, value):
        if change == QtGui.QGraphicsItem.ItemPositionHasChanged:
            print value.toPointF()
            # do other work, or emit signal
        return QtGui.QGraphicsPixmapItem.itemChange(self, change, value)


class MainWidget(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.pixmapItem = MovablePixmapItem(QtGui.QPixmap('image.png'))
        self.scene = QtGui.QGraphicsScene()
        self.scene.addItem(self.pixmapItem)
        self.view = QtGui.QGraphicsView(self.scene)
        layout = QtGui.QVBoxLayout()
        layout.addWidget(self.view)
        self.setLayout(layout)

    def do_test(self):
        pass


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    widget = MainWidget()
    widget.resize(640, 480)
    widget.show()
    sys.exit(app.exec_())

关于python - pyqt获取图像位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9429537/

相关文章:

python - 有没有比 int( byte_buffer.encode ('hex' ), 16 ) 更好的方法

python - python 等 ionic 体中的多个布局/布局转换

c++ - 在 QGraphicsScene 上绘画而不丢失已经在其上的图片。 Qt C++

python - QGraphicsView 开始时尺寸错误

multithreading - 从线程修改QGraphicsItem的正确方法?

c++ - QGraphicsScene 中没有显示任何内容

python使用oop在两个模块之间共享内存

python - scipy curve_fit 不喜欢数学模块

python - PyQt - 带参数的插槽

python - PIL 图像到 QPixmap 的转换问题