解释super().mousePressEvent(event)
时间: 2024-06-01 07:12:36 浏览: 134
super().mousePressEvent(event)是调用父类的mousePressEvent方法。在Python中,super()函数返回一个代理对象,该对象允许你调用父类的方法。在这种情况下,我们调用父类的mousePressEvent方法,以便可以执行父类的默认行为以及子类的自定义行为。
相关问题
pyqt 重写graphicsView的self.mousePressEvent,self.mouseMoveEvent,self.mouseReleaseEvent,进行框选矩形,返回坐标
好的,你可以参考下面的代码实现:
```python
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class GraphicsView(QGraphicsView):
def __init__(self):
super(GraphicsView, self).__init__()
self.setDragMode(QGraphicsView.RubberBandDrag)
self.setRenderHint(QPainter.Antialiasing)
self.setMouseTracking(True)
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.origin = event.pos()
self.rubberBand = QRubberBand(QRubberBand.Rectangle, self)
self.rubberBand.setGeometry(QRect(self.origin, QSize()))
self.rubberBand.show()
def mouseMoveEvent(self, event):
if self.rubberBand:
self.rubberBand.setGeometry(QRect(self.origin, event.pos()).normalized())
def mouseReleaseEvent(self, event):
if event.button() == Qt.LeftButton:
self.rubberBand.hide()
rect = self.mapToScene(self.rubberBand.geometry()).boundingRect()
print(f"({rect.x()}, {rect.y()}, {rect.width()}, {rect.height()})")
```
这个类继承了QGraphicsView,重写了mousePressEvent、mouseMoveEvent和mouseReleaseEvent方法。在mousePressEvent中,我们记录了起始点的位置,并创建QRubberBand对象进行矩形框选。在mouseMoveEvent中,我们更新QRubberBand的位置以进行动态框选。在mouseReleaseEvent中,我们隐藏QRubberBand,并且将其位置转换为场景坐标系中的矩形,然后打印出其坐标。
pyqt 重写graphicsView的self.mousePressEvent,self.mouseMoveEvent,self.mouseReleaseEvent,进行鼠标框选红色矩形,返回矩形坐标
好的,你可以参考下面的代码实现:
```python
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class GraphicsView(QGraphicsView):
def __init__(self):
super(GraphicsView, self).__init__()
self.setDragMode(QGraphicsView.RubberBandDrag)
self.setRenderHint(QPainter.Antialiasing)
self.setMouseTracking(True)
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.origin = event.pos()
self.rubberBand = QRubberBand(QRubberBand.Rectangle, self)
self.rubberBand.setGeometry(QRect(self.origin, QSize()))
self.rubberBand.setStyleSheet("QRubberBand{border: 2px solid red;}")
self.rubberBand.show()
def mouseMoveEvent(self, event):
if self.rubberBand:
self.rubberBand.setGeometry(QRect(self.origin, event.pos()).normalized())
def mouseReleaseEvent(self, event):
if event.button() == Qt.LeftButton:
self.rubberBand.hide()
rect = self.mapToScene(self.rubberBand.geometry()).boundingRect()
print(f"({rect.x()}, {rect.y()}, {rect.width()}, {rect.height()})")
```
这个类继承了QGraphicsView,重写了mousePressEvent、mouseMoveEvent和mouseReleaseEvent方法。在mousePressEvent中,我们记录了起始点的位置,并创建QRubberBand对象进行矩形框选。我们还为QRubberBand设置了样式表,使其显示为红色矩形。在mouseMoveEvent中,我们更新QRubberBand的位置以进行动态框选。在mouseReleaseEvent中,我们隐藏QRubberBand,并且将其位置转换为场景坐标系中的矩形,然后打印出其坐标。