【问题标题】:pyqt get image positionpyqt 获取图像位置
【发布时间】:2012-02-24 20:56:16
【问题描述】:

我有一个 QGraphicsscene,上面有一个图片 QPixmap 到 QGraphicsView。我解决了 QPixmap QGraphicsItem.ItemIsMovable。我想在图片移动时获得图片的位置。我该怎么做?

【问题讨论】:

    标签: python pyqt qgraphicsview qgraphicsscene


    【解决方案1】:

    如果您只想知道当前图像位置,可以从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_())
    

    【讨论】:

      猜你喜欢
      • 2011-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 2015-02-02
      • 1970-01-01
      相关资源
      最近更新 更多