如何存储QRect的值列表

时间:2017-03-25 06:39:11

标签: python pyqt pyqt4

我在PyQt4中使用QRubberBand,我正在裁剪图像。我需要QRect中存在的所有坐标值,如x1,y1,x2,y2。以下是用于裁剪图像的鼠标事件的一些功能。

def mousePressEvent(self, QMouseEvent): 
    self.origin = QMouseEvent.pos()
    self.rubberband.setGeometry(QtCore.QRect(self.origin, QtCore.QSize()) )
    self.rubberband.show()

def mouseMoveEvent(self, QMouseEvent):
    self.x = int(QMouseEvent.x())
    self.y = int(QMouseEvent.y())
    text1 = str(self.x)
    text2 = str(self.y)
    print self.x,self.y
    QtGui.QToolTip.showText(QMouseEvent.pos() , "X: "+text1+" "+"Y: "+text2,self)
    if self.rubberband.isVisible():
        self.rubberband.setGeometry(QtCore.QRect(self.origin, QMouseEvent.pos()).normalized() & self.image.rect())

def cropImage(self,rect,QMouseEvent):
    self.image = self.image.copy(rect)
    self.pic.setPixmap(QtGui.QPixmap.fromImage(self.image))
    self.image.save(os.getcwd()+'/cropped.png')
    self.update()

def mouseReleaseEvent(self, QMouseEvent):
    if self.rubberband.isVisible():
        self.rubberband.hide()
        selected = []
        rect = self.rubberband.geometry()
        print rect
        self.cropImage(rect,QMouseEvent)

如果我打印rect,我输出为

PyQt4.QtCore.QRect(51, 122, 131, 185)

我的兴趣是将这些QRect值保存在列表中以供进一步处理。

2 个答案:

答案 0 :(得分:1)

如果您有以下对象rect = QRect(x, y, w, h)您可以使用以下功能获取每个项目:

x = rect.x()
y = rect.y()
w = rect.width()
h = rect.height()

示例:

from PyQt4 import QtCore, QtGui
import sys

app = QtGui.QApplication(sys.argv)
rect = QtCore.QRect(51, 122, 131, 185)
x = rect.x()
y = rect.y()
w = rect.width()
h = rect.height()
print(x, y, w, h)
sys.exit(app.exec_())

答案 1 :(得分:0)

使用getRect()的{​​{1}}方法:

QRect

打印from PyQt5.QtCore import QRect rect = QRect(51, 122, 131, 185) print(rect.getRect())