def line_number_area_paint_event(self, event: QPaintEvent): log.debug("") painter = QPainter(self.line_number_area) painter.fillRect(event.rect(), Qt.lightGray) block = self.firstVisibleBlock() block_number = block.blockNumber() top = self.blockBoundingGeometry(block).translated( self.contentOffset()).top() bottom = top + self.blockBoundingRect(block).height() log.debug(top) log.debug(bottom) # print(block.isValid(), top <= event.rect().bottom()) # print(block.isVisible(), bottom >= event.rect().top()) while block.isValid() and top <= event.rect().bottom(): if block.isVisible() and bottom >= event.rect().top(): number = str(block_number + 1) # print(number) painter.setPen(Qt.black) painter.drawText(0, top, self.line_number_area.width(), self.fontMetrics().height(), Qt.AlignRight, number) block = block.next() top = bottom bottom = top + self.blockBoundingRect(block).height() block_number += 1
def paintEvent(self, e: QtGui.QPaintEvent): if self.isVisible(): block = self.editor.firstVisibleBlock() height = self.editor.fontMetrics().height() block_number = block.blockNumber() painter = QtGui.QPainter(self) painter.fillRect(e.rect(), QtGui.QColor("#ACDED5")) # painter.drawRect(0, 0, e.rect().width(), e.rect().height()) font = self.editor.font() current_block = self.editor.textCursor().block().blockNumber() + 1 condition = True while block.isValid() and condition: block_geometry = self.editor.blockBoundingGeometry(block) offset = self.editor.contentOffset() top = block_geometry.translated(offset).top() block_number += 1 rect = QtCore.QRect(0, top, self.width(), height) if block_number == current_block: font.setBold(True) else: font.setBold(False) painter.setFont(font) painter.drawText(rect, QtCore.Qt.AlignRight, '%i' % block_number) if top > e.rect().bottom(): condition = False block = block.next() painter.end()
def paintEvent(self, evt: QtGui.QPaintEvent) -> None: painter = QtGui.QPainter(self) try: painter.fillRect(evt.rect(), self._bg_color) painter.translate(-self.xOffset(), 0) self._paint(painter, evt.rect().translated(self.xOffset(), 0)) finally: painter.end()
def paintEvent(self, e: QtGui.QPaintEvent): painter = QtGui.QPainter(self) color = (r, g, b, a) = (255, 0, 0, 16) painter.fillRect(e.rect(), QColor(r, g, b, a)) if self.m_infocus: rect = e.rect() rect.adjust(0,0,-1,-1) painter.setPen(QColor(r, g, b)) painter.drawRect(rect)
def paintEvent(self, evt: QtGui.QPaintEvent) -> None: super().paintEvent(evt) painter = QtGui.QPainter(self) try: painter.fillRect(evt.rect(), Qt.white) painter.translate(-self.xOffset(), 0) self.renderTimeGrid(painter, evt.rect().translated(self.xOffset(), 0), show_numbers=True) # loop markers loop_start_time = self.__player_state.loopStartTime() if loop_start_time is not None: x = self.timeToX(loop_start_time) painter.setBrush(Qt.black) painter.setPen(Qt.NoPen) polygon = QtGui.QPolygon() polygon.append(QtCore.QPoint(x, 0)) polygon.append(QtCore.QPoint(x + 7, 0)) polygon.append(QtCore.QPoint(x + 2, 5)) polygon.append(QtCore.QPoint(x + 2, self.height() - 5)) polygon.append(QtCore.QPoint(x + 7, self.height())) polygon.append(QtCore.QPoint(x, self.height())) painter.drawPolygon(polygon) loop_end_time = self.__player_state.loopEndTime() if loop_end_time is not None: x = self.timeToX(loop_end_time) painter.setBrush(Qt.black) painter.setPen(Qt.NoPen) polygon = QtGui.QPolygon() polygon.append(QtCore.QPoint(x - 6, 0)) polygon.append(QtCore.QPoint(x + 2, 0)) polygon.append(QtCore.QPoint(x + 2, self.height())) polygon.append(QtCore.QPoint(x - 6, self.height())) polygon.append(QtCore.QPoint(x, self.height() - 6)) polygon.append(QtCore.QPoint(x, 6)) painter.drawPolygon(polygon) # playback time x = self.timeToX(self.__player_state.currentTime()) painter.fillRect(x, 0, 2, self.height(), QtGui.QColor(0, 0, 160)) finally: painter.end()
def paint_all( self, event: QPaintEvent, bindings, figures: Dict[str, Figure], selected_figures: list, created_figure: Optional[Figure] = None, ): painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.Antialiasing, True) painter.fillRect(event.rect(), QBrush(QColor(255, 255, 255))) painter.save() painter.translate(*self._center) # Paint all paint.write_coordinates_near_pointer(painter, self._mouse_xy) for figure in figures.values(): paint.paint_figure(painter, figure, 'basic') paint.paint_bindings(painter, figures, bindings) # Paint painted figure if created_figure is not None: paint.paint_figure(painter, created_figure, 'created') # Paint selected figure for selected_figure in selected_figures: paint.paint_figure(painter, selected_figure, 'selected') # Finish painting painter.restore() painter.end()
def paintEvent(self, event: QPaintEvent) -> None: qp = QPainter() qp.begin(self) qp.setRenderHint(QPainter.Antialiasing) qp.fillRect(event.rect(), QBrush(Qt.white)) # or changed to Qt.white self._drawPeptide(qp) qp.end()
def _draw_text(self, event: QtG.QPaintEvent, painter: QtG.QPainter): metrics = QtG.QFontMetrics(self.font()) elided_text = metrics.elidedText(self.text(), self._elide_mode, self.width()) # noinspection PyTypeChecker painter.drawText(event.rect(), self.alignment() | QtC.Qt.AlignVCenter, elided_text)
def paintEvent(self, event: QtGui.QPaintEvent): # 通过一个绘图事件实现绘图。 paint = QtGui.QPainter() paint.begin(self) paint.setPen(QtGui.QColor(168, 34, 3)) paint.setFont(QtGui.QFont("STLiti", 20)) paint.drawText(event.rect(), QtCore.Qt.AlignCenter, self.text) paint.end()
def drawText(self, e: QtGui.QPaintEvent, qp): qp.setPen(QColor(168, 34, 3)) qp.setFont(QFont('Decorative', 10)) qp.drawText(e.rect(), Qt.AlignCenter, self.text) size = self.size() for i in range(1000): x = random.randint(1, size.width() - 1) y = random.randint(1, size.height() - 1) qp.drawPoint(x, y)
def lineNumberAreaPaintEvent(self, event: QtGui.QPaintEvent) -> None: painter = QtGui.QPainter(self.__line_number_area) painter.fillRect(event.rect(), Qt.lightGray) block = self.firstVisibleBlock() block_number = block.blockNumber() offset = self.contentOffset() top = int(self.blockBoundingGeometry(block).translated(offset).top()) bottom = top + int(self.blockBoundingRect(block).height()) while block.isValid() and top <= event.rect().bottom(): if block.isVisible() and bottom >= event.rect().top(): number = str(block_number + 1) painter.setPen(Qt.black) width = self.__line_number_area.width() height = self.fontMetrics().height() painter.drawText(0, top, width, height, Qt.AlignRight, number) block = block.next() top = bottom bottom = top + int(self.blockBoundingRect(block).height()) block_number += 1
def gutter_paint_event(self, event: QPaintEvent): painter = QPainter(self.gutter) painter.fillRect(event.rect(), QColor(Qt.lightGray).lighter(125)) block = self.firstVisibleBlock() block_number = block.blockNumber() top = self.blockBoundingGeometry(block).translated( self.contentOffset()).top() bottom = top + self.blockBoundingRect(block).height() while block.isValid() and top <= event.rect().bottom(): if block.isVisible() and bottom >= event.rect().top(): line_number = block_number + 1 painter.setPen(Qt.black) painter.drawText(0, top, self.gutter.width(), self.fontMetrics().height(), Qt.AlignRight, str(line_number)) block = block.next() top = bottom bottom = top + self.blockBoundingRect(block).height() block_number += 1
def paintEvent(self, event: QPaintEvent): p = QPainter(self) if FLAT_STYLE: p.fillRect(event.rect(), BASE_COLOR) current = self._currentIndex paintTab = self.paintTab for i, tab in enumerate(self._tabs): if i != current: paintTab(p, i) if current != -1: paintTab(p, current)
def paintEvent(self, event: QPaintEvent) -> None: """ Overridden paintEvent of QWidget which repainting numbers in bar. Args: event(QPaintEvent): qt event object with event data """ if self.isVisible(): block = self.editor.firstVisibleBlock() # first visible block of editor line_number = block.blockNumber() + 1# line of first visible block font_height = self.fontMetrics().height() # height of used font for line numbers painter = QPainter(self) # painter which will draw bar and numbers painter.fillRect(event.rect(), QColor("#d3d7cf")) # fill the line number bar with some color TODO: configurable painter.drawRect(0, 0, event.rect().width() - 1, event.rect().height() - 1) # draw line number bar border font = painter.font() # actual font current_block = self.editor.textCursor().block().blockNumber() + 1 # line of actual block under cursor condition = True while block.isValid() and condition: block_geometry = self.editor.blockBoundingGeometry(block) offset = self.editor.contentOffset() block_top = block_geometry.translated(offset).top() number_rect = QRect(5, block_top, self.width() - 5, font_height) # rectangle for the line number font.setBold(line_number == current_block) # set bold line number for actual line painter.setFont(font) painter.drawText(number_rect, Qt.AlignLeft, str(line_number)) line_number += 1 condition = block_top <= event.rect().bottom() block = block.next() painter.end()
def paintEvent(self, event: QPaintEvent) -> None: """Process the paint event by repainting this Widget. Parameters ---------- event : QPaintEvent """ super().paintEvent(event) # make sure the frame is painted if True: # self._autoencoder is not None painter = QPainter() painter.begin(self) self._drawAutoencoder(painter, event.rect()) painter.end()
def drawBackground(self, qp: QPainter, event: QPaintEvent): qp.fillRect(event.rect(), QColor(255, 255, 255)) pen = QPen(QColor(223, 223, 223), 1, Qt.SolidLine) qp.setPen(pen) x1 = 15 y1 = 15 x2 = event.rect().width() - 30 y2 = event.rect().height() - 30 qp.drawLine(x1, y1, x2, y1) qp.drawLine(x2, y1, x2, y2) qp.drawLine(x1, y1, x1, y2) qp.drawLine(x1, y2, x2, y2) pen = QPen(QColor(223, 223, 223), 1, Qt.DotLine) qp.setPen(pen) qp.drawLine(x1, (y1 + y2) / 4, x2, (y1 + y2) / 4) qp.drawLine(x1, (y1 + y2) * 3 / 4, x2, (y1 + y2) * 3 / 4) qp.drawLine((x1 + x2) / 4, y1, (x1 + x2) / 4, y2) qp.drawLine((x1 + x2) / 2, y1, (x1 + x2) / 2, y2) qp.drawLine((x1 + x2) * 3 / 4, y1, (x1 + x2) * 3 / 4, y2) pen = QPen(QColor(0, 0, 0), 1, Qt.DotLine) qp.setPen(pen) qp.drawLine(x1, (y1 + y2) / 2, x2, (y1 + y2) / 2)
def paintEvent(self, event: QPaintEvent) -> None: """Process the paint event by repainting this Widget. Parameters ---------- event : QPaintEvent """ super().paintEvent(event) # make sure the frame is painted if self._features is not None: painter = QPainter() painter.begin(self) self._drawFeatures(painter, event.rect()) painter.end()
def paintEvent(self, paint_event: QPaintEvent): super().paintEvent(paint_event) if self._pixmap is None: return painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) pix_size: QSize = self._pixmap.size() pix_size.scale(paint_event.rect().size(), Qt.KeepAspectRatio) scaled_pix: QPixmap = self._pixmap.scaled(pix_size, Qt.KeepAspectRatio, Qt.SmoothTransformation) painter.drawPixmap(QPoint(), scaled_pix)
def lineNumberAreaPaintEvent(self, event: QtGui.QPaintEvent): painter = QtGui.QPainter(self.lineNumberArea) painter.fillRect(event.rect(), QtCore.Qt.lightGray) block = self.firstVisibleBlock() blockNumber = block.blockNumber() top = int( self.blockBoundingGeometry(block).translated( self.contentOffset()).top()) bottom = top + int(self.blockBoundingRect(block).height()) while block.isValid() and top <= event.rect().bottom(): if block.isVisible() and bottom >= event.rect().top(): number = format(blockNumber + 1, "d") painter.setPen(QtCore.Qt.darkGray) font = painter.font() font.setWeight(QtGui.QFont.Bold) painter.setFont(font) painter.drawText(0, top, self.lineNumberArea.width() - 3, self.fontMetrics().height(), QtCore.Qt.AlignRight, number) block = block.next() top = bottom bottom = top + int(self.blockBoundingRect(block).height()) blockNumber += 1
def statusAreaPaintEvent(self, event: QPaintEvent): painter = QPainter(self._statusArea) painter.fillRect(event.rect(), Qt.lightGray) block = self.firstVisibleBlock() top = qRound( self.blockBoundingGeometry(block).translated( self.contentOffset()).top()) bottom = top + qRound(self.blockBoundingRect(block).height()) while block.isValid() and top <= event.rect().bottom(): if block.isVisible() and bottom >= event.rect().top(): painter.setPen(Qt.red) painter.drawText( 0, top, self._statusArea.width(), self.fontMetrics().height(), Qt.AlignRight, MARK if block.userState() == self._State.Error else NOMARK, ) block = block.next() top = bottom bottom = top + qRound(self.blockBoundingRect(block).height())
def paintEvent(self, event: QPaintEvent) -> NoReturn: rect: QRect = event.rect() spacing = 25 paint = QPainter() paint.begin(self) for i in range(rect.x(), rect.x() + rect.width() + spacing, spacing): for j in range(rect.y(), rect.y() + rect.height() + spacing, spacing): paint.drawPoint( QPointF( int(i / spacing) * spacing, int(j / spacing) * spacing)) pen = QPen(Qt.black, 3, Qt.SolidLine, Qt.RoundCap) for wire in WorkspaceView.wires: pen.setColor(Qt.blue if wire.selected else Qt.black) paint.setPen(pen) paint.drawLine(wire.output, wire.input) paint.end()
def paintEvent(self, event: QPaintEvent): if self.isVisible(): block: QTextBlock = self.editor.firstVisibleBlock() height: int = self.fontMetrics().height() number: int = block.blockNumber() painter = QPainter(self) painter.fillRect(event.rect(), QColor(53, 53, 53)) # painter.drawRect(0, 0, event.rect().width() - 1, event.rect().height() - 1) font = painter.font() font.setPointSize(15) for blocks in self.editor.currentlyVisibleBlocks: bl: QTextBlock = blocks[-1] blockGeometry: QRectF = self.editor.blockBoundingGeometry(bl) offset: QPointF = self.editor.contentOffset() blockTop: float = float( blockGeometry.translated(offset).top() + 2) rect: QRect = QRect(0, blockTop, self.width(), height) painter.drawText(rect, Qt.AlignRight, str(bl.blockNumber() + 1)) painter.end()
def canvasPaintEvent(self, ev : QPaintEvent): print(self.counter, ' ', end='') self.counter += 1 repaintRect = ev.rect() repaintArea = Rectangle(repaintRect.x(), repaintRect.y(), repaintRect.width(), repaintRect.height()) painter = QPainter(self.w) thumbRequested = False cells = self.layoutEngine.getVisibleCells(repaintArea) for cellNum, cell in cells.items(): thumb = self.items[cellNum] if thumb.getPath() in self.thumbs: self.drawThumnail(cellNum, self.thumbs[thumb.getPath()], thumb, cell, painter) else: if not thumbRequested: self.needThumb.emit(cellNum, thumb.getPath()) thumbRequested = True self.drawThumnail(cellNum, self.noThumbPixmap, self.items[cellNum], cell, painter)
def canvasPaintEvent(self, ev: QPaintEvent): print(self.counter, ' ', end='') self.counter += 1 repaintRect = ev.rect() repaintArea = Rectangle(repaintRect.x(), repaintRect.y(), repaintRect.width(), repaintRect.height()) painter = QPainter(self.w) thumbRequested = False cells = self.layoutEngine.getVisibleCells(repaintArea) for cellNum, cell in cells.items(): thumb = self.items[cellNum] if thumb.getPath() in self.thumbs: self.drawThumnail(cellNum, self.thumbs[thumb.getPath()], thumb, cell, painter) else: if not thumbRequested: self.needThumb.emit(cellNum, thumb.getPath()) thumbRequested = True self.drawThumnail(cellNum, self.noThumbPixmap, self.items[cellNum], cell, painter)
def draw(self, q_painter: QtGui.QPainter, q_paint_event: QtGui.QPaintEvent): if self.visible: self._q_painter = q_painter q_painter.setRenderHint(QtGui.QPainter.Antialiasing) self._window_rect = q_paint_event.rect() self._build()
def paintEvent(self, e: QtGui.QPaintEvent): painter = QtGui.QPainter(self) rect = e.rect() rect.adjust(0, 0, -1, -1) painter.setPen(self.pen) painter.drawRect(rect)
def paintEvent(self, evt: QtGui.QPaintEvent) -> None: painter = QtGui.QPainter(self) try: painter.fillRect(evt.rect(), self.__bg_color) w = self.width() - 10 h = self.height() - 10 for g in (1, 2, 3, 4, 6, 7, 8, 9, 5, 0, 10): if g in (0, 10): color = self.__border_color elif g == 5: color = self.__center_color else: color = self.__grid_color painter.fillRect(int(g * (w - 1) / 10) + 5, 5, 1, h, color) painter.fillRect(5, int(g * (h - 1) / 10) + 5, w, 1, color) path = QtGui.QPainterPath() tfa = audioproc.TransferFunction(self.__spec) x_to_value = lambda value: ( (self.__spec.input_max - self.__spec.input_min) * (value / (w - 1)) + self.__spec.input_min) value_to_y = lambda value: int( (h - 1) * (value - self.__spec.output_min) / (self.__spec.output_max - self.__spec.output_min)) for x in range(w): value = x_to_value(x) value = tfa(value) y = value_to_y(value) if x == 0: path.moveTo(x + 5, h - y + 4) else: path.lineTo(x + 5, h - y + 4) painter.setPen(self.__plot_pen) painter.drawPath(path) self.__handles.clear() handles_to_render = [] if self.__spec.WhichOneof('type') in ('fixed', 'linear'): y1 = value_to_y(tfa(self.__spec.input_min)) r = QtCore.QRect(3, h - y1 + 2, 6, 6) self.__handles['left'] = r handles_to_render.append('left') y2 = value_to_y(tfa(self.__spec.input_max)) r = QtCore.QRect(w + 2, h - y2 + 2, 6, 6) self.__handles['right'] = r handles_to_render.append('right') elif self.__spec.WhichOneof('type') == 'gamma': x = int(0.3 * math.log10(self.__spec.gamma.value) * w) + w // 2 y = value_to_y(tfa(x_to_value(x))) r = QtCore.QRect(x + 3, h - y + 2, 6, 6) self.__handles['center'] = r handles_to_render.append('center') for name in handles_to_render: rect = self.__handles[name] painter.setPen(self.__handle_pen) if name == self.__active_handle: painter.setBrush(self.__active_handle_brush) else: painter.setBrush(self.__handle_brush) painter.drawRect(QtCore.QRectF(rect).translated(-0.5, -0.5)) finally: painter.end()
def drawCurve(self, qp: QPainter, event: QPaintEvent): h = event.rect().height() - 30 w = event.rect().width() - 30 if self.pf is None: return kw = w / self.N kh = h / (self.top - self.bodom) #绘制k线 for i in range(0, self.N, 1): high = self.pf.ix[i, 'high'] low = self.pf.ix[i, 'low'] open = self.pf.ix[i, 'open'] close = self.pf.ix[i, 'close'] pre_close = self.pf.ix[i, 'pre_close'] pct_chg = self.pf.ix[i, 'pct_chg'] #画k线 if open < close: #画K线 qp.fillRect(15 + kw * (self.N - i - 1), 15 + (self.top - close) * kh, kw, (close - open) * kh, QColor(255, 0, 0)) #画上下影线 pen = QPen(QColor(255, 0, 0), 1, Qt.SolidLine) qp.setPen(pen) qp.drawLine(15 + kw * (self.N - i - 1) + kw * 0.5, 15 + (self.top - high) * kh, 15 + kw * (self.N - i - 1) + kw * 0.5, 15 + (self.top - low) * kh) else: #画K线 if open == close: pen = QPen(QColor(0, 0, 255), 1, Qt.SolidLine) qp.setPen(pen) qp.drawLine(15 + kw * (self.N - i - 1), 15 + (self.top - open) * kh, 15 + kw * (self.N - i - 1) + kw, 15 + (self.top - open) * kh) else: qp.fillRect(15 + kw * (self.N - i - 1), 15 + (self.top - open) * kh, kw, (open - close) * kh, QColor(0, 0, 255)) #画上下影线 pen = QPen(QColor(0, 0, 255), 1, Qt.SolidLine) qp.setPen(pen) qp.drawLine(15 + kw * (self.N - i - 1) + kw * 0.5, 15 + (self.top - high) * kh, 15 + kw * (self.N - i - 1) + kw * 0.5, 15 + (self.top - low) * kh) #绘制均线 #5日 self.drawMaLine(qp, kw, kh, 5, QColor(0, 0, 0)) #13日 self.drawMaLine(qp, kw, kh, 13, QColor(255, 201, 14)) #24日 self.drawMaLine(qp, kw, kh, 24, QColor(255, 0, 128)) #56日 self.drawMaLine(qp, kw, kh, 54, QColor(0, 255, 64))
def paintEvent(self, event: QPaintEvent) -> None: p = QPainter(self) self.m_normalMap.render(p, event.rect()) p.setPen(Qt.black) p.drawText( self.rect(), Qt.AlignBottom | Qt.TextWordWrap, "Map data CCBYSA 2009 OpenStreetMap.org contributors", ) p.end() if self.zoomed: dim = min(self.width(), self.height()) magnifierSize = min(MAX_MAGNIFIER, dim * 2 / 3) radius = magnifierSize / 2 ring = radius - 15 box = QSize(magnifierSize, magnifierSize) if self.maskPixmap.size() != box: self.maskPixmap = QPixmap(box) self.maskPixmap.fill(Qt.transparent) g = QRadialGradient() g.setCenter(radius, radius) g.setFocalPoint(radius, radius) g.setRadius(radius) g.setColorAt(1.0, QColor(255, 255, 255, 0)) g.setColorAt(0.5, QColor(128, 128, 128, 255)) mask = QPainter(self.maskPixmap) mask.setRenderHint(QPainter.Antialiasing) mask.setCompositionMode(QPainter.CompositionMode_Source) mask.setBrush(g) mask.setPen(Qt.NoPen) mask.drawRect(self.maskPixmap.rect()) mask.setBrush(QColor(Qt.transparent)) mask.drawEllipse(g.center(), ring, ring) mask.end() center = self.dragPos - QPoint(0, radius) center = center + QPoint(0, radius / 2) corner = center - QPoint(radius, radius) xy = center * 2 - QPoint(radius, radius) # only set the dimension to the magnified portion if self.zoomPixmap.size() != box: zoomPixmap = QPixmap(box) zoomPixmap.fill(Qt.lightGray) if True: p = QPainter(zoomPixmap) p.translate(-xy) self.m_largeMap.render(p, QRect(xy, box)) p.end() clipPath = QPainterPath() clipPath.addEllipse(center, ring, ring) p = QPainter(self) p.setRenderHint(QPainter.Antialiasing) p.setClipPath(clipPath) p.drawPixmap(corner, zoomPixmap) p.setClipping(False) p.drawPixmap(corner, self.maskPixmap) p.setPen(Qt.gray) p.drawPath(clipPath) if self.invert: p = QPainter(self) p.setCompositionMode(QPainter.CompositionMode_Difference) p.fillRect(event.rect(), Qt.white) p.end()
def paintEvent(self, event: QtGui.QPaintEvent) -> None: """ Draws the message/busy overlay See http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qwidget.html#paintEvent """ """ Draws the message/busy overlay See http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qwidget.html#paintEvent """ painter = QtGui.QPainter() painter.begin(self) painter.setRenderHint(QtGui.QPainter.Antialiasing) if self.status == self.BUSY: painter.fillRect(event.rect(), QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))) animIdx = int((self.counter) % 7) painter.pen().setWidth(4) coords = [ (self.width() / 2 - 30, self.height() / 2 - 30), # Top left (self.width() / 2, (self.height() / 2) - 30), # Top center (self.width() / 2 + 30, (self.height() / 2) - 30), # Top right (self.width() / 2 + 30, (self.height() / 2)), # Center right (self.width() / 2 + 30, (self.height() / 2) + 30), # Bottom right (self.width() / 2, (self.height() / 2) + 30), # Bottom center (self.width() / 2 - 30, (self.height() / 2) + 30), # Bottom left (self.width() / 2 - 30, (self.height() / 2)) ] # Center left for i in range(0, 8): if (animIdx - i) % 8 == 0: color = QtGui.QColor(84, 1, 11, min(255, self.counter * 10)) elif (animIdx - i) % 8 == 1: color = QtGui.QColor(147, 2, 20, min(255, self.counter * 10)) else: color = QtGui.QColor(211, 3, 28, min(255, self.counter * 10)) x, y = coords[i] painter.fillRect(int(x - 15), int(y - 15), 20, 20, color) painter.pen().setWidth(1) painter.setPen(QtGui.QColor(0, 0, 0, min(255, self.counter * 10))) fm = QtGui.QFontMetrics(painter.font()) fontWidth = fm.width(self.message) painter.drawText(self.width() / 2 - fontWidth / 2, (self.height() / 2) + 55, self.message) elif self.status == self.SUCCESS: if self.counter > self.INFO_DURATION - 10: painter.setOpacity((20 - self.counter) / 10.0) painter.fillRect(event.rect(), QtGui.QBrush(QtGui.QColor(52, 131, 63, 192))) painter.drawImage( (self.width() / 2 - self.okayImage.width() / 2), (self.height() / 2 - self.okayImage.height() / 2), self.okayImage) fm = QtGui.QFontMetrics(painter.font()) fontWidth = fm.width(self.message) painter.setPen(QtGui.QColor(255, 255, 255)) painter.drawText( self.width() / 2 - fontWidth / 2, (self.height() / 2 + self.okayImage.height() / 2) + 50, self.message) if self.counter > self.INFO_DURATION: self.clear(True) elif self.status == self.MISSING: if self.counter > self.WARNING_DURATION - 10: painter.setOpacity((20 - self.counter) / 10.0) painter.fillRect(event.rect(), QtGui.QBrush(QtGui.QColor(0, 65, 110, 192))) painter.drawImage( (self.width() / 2 - self.missingImage.width() / 2), (self.height() / 2 - self.missingImage.height() / 2), self.missingImage) fm = QtGui.QFontMetrics(painter.font()) fontWidth = fm.width(self.message) painter.setPen(QtGui.QColor(255, 255, 255)) painter.drawText( self.width() / 2 - fontWidth / 2, (self.height() / 2 + self.missingImage.height() / 2) + 50, self.message) if self.counter > self.WARNING_DURATION: self.clear(True) elif self.status == self.ERROR: if self.counter > self.ERROR_DURATION - 10: painter.setOpacity((20 - self.counter) / 10.0) painter.fillRect(event.rect(), QtGui.QBrush(QtGui.QColor(0, 0, 0, 128))) painter.drawImage( (self.width() / 2 - self.errorImage.width() / 2), (self.height() / 2 - self.errorImage.height() / 2), self.errorImage) fm = QtGui.QFontMetrics(painter.font()) fontWidth = fm.width(self.message) painter.setPen(QtGui.QColor(248, 197, 51)) painter.drawText( self.width() / 2 - fontWidth / 2, (self.height() / 2 + self.errorImage.height() / 2) + 50, self.message) if self.counter > self.ERROR_DURATION: self.clear(True) painter.end()
def paintEvent(self, event: QtGui.QPaintEvent) -> None: painter = QtGui.QPainter(self.label.pixmap()) painter.drawImage(event.rect(), self.image, self.rect())