from PyQt5 import QtGui from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * class PromptBar(QLabel): def __init__(self, parent=None): super().__init__(parent) def paintEvent(self, e): # 绘图事件 qp = QPainter() qp.begin(self) self.drawRectangles1(qp) # 绘制线条矩形 self.drawRectangles2(qp) # 绘制填充矩形 self.drawRectangles3(qp) # 绘制线条+填充矩形 self.drawRectangles4(qp) # 绘制线条矩形2 qp.end() def drawRectangles1(self, qp): # 绘制填充矩形 qp.setPen(QPen(Qt.black, 2, Qt.SolidLine)) # 颜色、线宽、线性 qp.drawRect(*self.data) def drawRectangles2(self, qp): # 绘制填充矩形 qp.setPen(QPen(Qt.black, 2, Qt.NoPen)) qp.setBrush(QColor(200, 0, 0)) qp.drawRect(220, 15, 200, 100) def drawRectangles3(self, qp): # 绘制线条+填充矩形 qp.setPen(QPen(Qt.black, 2, Qt.SolidLine)) qp.setBrush(QColor(200, 0, 0)) qp.drawRect(430, 15, 200, 100) def drawRectangles4(self, qp): # 绘制线条矩形2 path = QtGui.QPainterPath() qp.setPen(QPen(Qt.blue, 2, Qt.SolidLine)) qp.setBrush(QColor(0, 0, 0, 0)) # 设置画刷颜色透明 path.addRect(100, 200, 200, 100) qp.drawPath(path)