pyqt5怎么样在主界面类已有的Qlabel中用鼠标点击得到点坐标并画各种几何图形,Qlabel是在主界面中定义的,不能单独写类实现程序
时间: 2024-05-07 14:23:59 浏览: 225
您可以在QLabel类中重载mousePressEvent()函数,并在该函数中获取鼠标点击的坐标位置。然后,您可以使用QPainter类来在QLabel上绘制各种几何图形。以下是示例代码:
```python
from PyQt5.QtWidgets import QLabel
from PyQt5.QtGui import QPainter, QColor, QPen
from PyQt5.QtCore import Qt
class MyLabel(QLabel):
def __init__(self, parent=None):
super().__init__(parent)
self.point = None
def mousePressEvent(self, event):
if event.buttons() == Qt.LeftButton:
self.point = event.pos()
self.update()
def paintEvent(self, event):
super().paintEvent(event)
if self.point is not None:
painter = QPainter(self)
painter.setPen(QPen(Qt.red, 3))
painter.drawPoint(self.point)
painter.setPen(QPen(QColor(0, 255, 0), 2))
painter.drawLine(self.point.x(), 0, self.point.x(), self.height())
painter.drawLine(0, self.point.y(), self.width(), self.point.y())
painter.setPen(QPen(QColor(255, 0, 0), 1, Qt.DotLine))
painter.drawRect(self.point.x(), self.point.y(), 50, 50)
```
在这个示例代码中,我们创建了一个自定义的QLabel类,并重载了mousePressEvent()和paintEvent()函数。在mousePressEvent()函数中,我们获取了鼠标点击的坐标位置,并在QLabel上绘制了一个红色的点、水平和垂直的绿色线、以及一个以该点为左上角的50x50的矩形(采用虚线样式)。在paintEvent()函数中,我们首先调用了父类的paintEvent()函数,然后根据需要在QLabel上绘制图形。当point属性为None时,不绘制任何图形。当point属性被设置为非空值时,我们在图像上绘制各种几何图形。
您可以根据需要修改和扩展这个示例代码,以实现更丰富和复杂的功能。
阅读全文