我在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值保存在列表中以供进一步处理。
答案 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())