pyqt5 graphicview 加载图片后,鼠标点击图片后,根据鼠标点击的坐标在周围框选一个100*100的红色透明矩形,并返回矩形坐标 完整代码
时间: 2024-02-24 17:00:10 浏览: 83
(GraphicsView,QPainter,QGraphicsRectItem)QT用鼠标绘制矩形
以下是一个使用 PyQt5 的 QGraphicsView 控件加载图片,并在鼠标点击图片后绘制一个红色透明矩形的示例代码。根据鼠标点击的坐标在周围框选一个 100*100 的红色透明矩形,并返回矩形的坐标。
```python
import sys
from PyQt5.QtCore import Qt, QRectF
from PyQt5.QtGui import QPixmap, QColor, QPainter, QPen, QBrush
from PyQt5.QtWidgets import QApplication, QGraphicsScene, QGraphicsView
class ImageViewer(QGraphicsView):
def __init__(self, parent=None):
super().__init__(parent)
self.scene = QGraphicsScene(self)
self.setScene(self.scene)
self.setSceneRect(0, 0, self.width(), self.height())
self.setRenderHint(QPainter.Antialiasing)
self.setRenderHint(QPainter.SmoothPixmapTransform)
self.image_item = None
self.rect_item = None
def load_image(self, filename):
pixmap = QPixmap(filename)
self.scene.clear()
self.image_item = self.scene.addPixmap(pixmap)
self.setSceneRect(QRectF(pixmap.rect()))
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton and self.image_item is not None:
pos = event.pos()
rect = QRectF(pos.x() - 50, pos.y() - 50, 100, 100)
self.rect_item = self.scene.addRect(rect, QPen(Qt.red), QBrush(QColor(255, 0, 0, 50)))
print(rect.x(), rect.y(), rect.width(), rect.height())
if __name__ == '__main__':
app = QApplication(sys.argv)
viewer = ImageViewer()
viewer.load_image('test.jpg')
viewer.show()
sys.exit(app.exec_())
```
在这个例子中,我们使用了 QGraphicsView 控件来显示图片,并使用 QGraphicsScene 控件来管理所有的图形项。当用户点击鼠标左键时,程序会计算出以鼠标点击点为中心的 100*100 矩形的位置,并创建一个矩形图形项。程序会将矩形的坐标打印出来。
阅读全文