pyqt5 graphicsView 加载显示图片,在图片上鼠标框选红色矩形并返回矩形在图片上的坐标 完整代码
时间: 2023-12-22 12:05:56 浏览: 133
以下是一个实现你要求功能的完整代码:
```python
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class GraphicsView(QGraphicsView):
def __init__(self):
super().__init__()
self.scene = QGraphicsScene(self)
self.setScene(self.scene)
self.setSceneRect(-500, -500, 1000, 1000)
self.image = QImage("image.jpg")
self.pixmap = QPixmap.fromImage(self.image)
self.item = QGraphicsPixmapItem(self.pixmap)
self.scene.addItem(self.item)
self.rubberBand = QRubberBand(QRubberBand.Rectangle, self)
self.origin = QPoint()
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.origin = event.pos()
self.rubberBand.setGeometry(QRect(self.origin, QSize()))
self.rubberBand.show()
super().mousePressEvent(event)
def mouseMoveEvent(self, event):
if self.rubberBand.isVisible():
self.rubberBand.setGeometry(QRect(self.origin, event.pos()).normalized())
super().mouseMoveEvent(event)
def mouseReleaseEvent(self, event):
if event.button() == Qt.LeftButton:
self.rubberBand.hide()
rect = self.rubberBand.geometry()
x = rect.x() + self.horizontalScrollBar().value()
y = rect.y() + self.verticalScrollBar().value()
width = rect.width()
height = rect.height()
print("Selected rect: ({}, {}), width: {}, height: {}".format(x, y, width, height))
super().mouseReleaseEvent(event)
if __name__ == "__main__":
app = QApplication(sys.argv)
view = GraphicsView()
view.show()
sys.exit(app.exec_())
```
这个程序使用PyQt5的Graphics View框架加载并显示一张图片,并且允许用户在图片上用鼠标框选红色矩形。当用户释放鼠标时,程序会打印出选中矩形的左上角坐标以及宽度和高度。
阅读全文
相关推荐














