def _horizontalGradientHelper(cls, painter: QPainter, spanRect: QRect, rect: QRect, lightColored: bool): if lightColored: shadowGradient = QLinearGradient(rect.topLeft(), rect.bottomLeft()) shadowGradient.setColorAt(0, 0xf0f0f0) shadowGradient.setColorAt(1, 0xcfcfcf) painter.fillRect(rect, shadowGradient) return base = cls.baseColor(lightColored) highlight = cls.highlightColor(lightColored) shadow = cls.shadowColor(lightColored) grad = QLinearGradient(rect.topLeft(), rect.bottomLeft()) grad.setColorAt(0, highlight.lighter(120)) if rect.height() == cls.navigationWidgetHeight: grad.setColorAt(0.4, highlight) grad.setColorAt(0.401, base) grad.setColorAt(1, shadow) painter.fillRect(rect, grad) shadowGradient = QLinearGradient(spanRect.topLeft(), spanRect.topRight()) shadowGradient.setColorAt(0, QColor(0, 0, 0, 30)) lighterHighlight = highlight.lighter(130) lighterHighlight.setAlpha(100) shadowGradient.setColorAt(0.7, lighterHighlight) shadowGradient.setColorAt(1, QColor(0, 0, 0, 40)) painter.fillRect(rect, shadowGradient)
def horizontalGradient(self, painter, spanRect, clipRect): key = 'fancy vertical gradient %d %d %d %d %d'%(spanRect.width(), spanRect.height(), clipRect.width(), clipRect.height(), self.baseColor.rgb()) pixmap = QPixmap() p = painter rect = QRect(clipRect) if self._usePixmapCache and not QPixmapCache.find(key, pixmap): pixmap = QPixmap(clipRect.size()) p = QPainter(pixmap) rect = QRect(0, 0, clipRect.width(), clipRect.height()) base = self.baseColor grad = QLinearGradient(QPointF(rect.topLeft()), QPointF(rect.bottomLeft())) grad.setColorAt(0, self.highlightColor.lighter(120)) if rect.height() == self.navigationWidgetHeight: grad.setColorAt(0.4, self.highlightColor) grad.setColorAt(0.401, base) grad.setColorAt(1, self.shadowColor) p.fillRect(rect, grad) shadowGradient = QLinearGradient(QPointF(spanRect.topLeft()), QPointF(spanRect.topRight())) shadowGradient.setColorAt(0, QColor(0, 0, 0, 30)) highlight = self.highlightColor.lighter(130) highlight.setAlpha(100) shadowGradient.setColorAt(0.7, highlight) shadowGradient.setColorAt(1, QColor(0, 0, 0, 40)) p.fillRect(rect, shadowGradient) if self._usePixmapCache and not QPixmapCache.find(key, pixmap): painter.drawPixmap(clipRect.topLeft(), pixmap) p.end() del p QPixmapCache.insert(key, pixmap)
def paintEvent( self, event ): """ Das automatisch ausgelöste paintEvent, das das Widget bei jeder Fensterveränderung neu zeichnet. """ if self.__maximum > 0: frameWidth = 1 separatorWidth = 1 # Damit der Rahmen nicht irgendwie abgeschnitten wird, muß das Quadrat entsprechend kleiner sein. squareSideLength = 10 framePen = QPen( frameWidth ) framePen.setColor( self.__colorFrame ) squareSideLengthPlus = squareSideLength + 2 * frameWidth painter = QPainter( self ) windowWidth = self.width() / min( self.__maximum, self.__columnMax ) windowHeight = self.__maximum / self.__columnMax windowHeight = math.ceil( windowHeight ) windowHeight = self.height() / windowHeight side = min( windowWidth, windowHeight ) painter.setRenderHint( QPainter.Antialiasing ) # Wenn das Widget disabled ist, muß ich den Alphakanal meiner Farben verändern. if ( not self.isEnabled() ): painter.setOpacity( .5 ) #painter.translate( float( windowWidth ), float( windowHeight ) ) painter.scale( side / squareSideLengthPlus, side / squareSideLengthPlus ) painter.setPen( framePen ) painter.setBrush( self.__colorEmpty ) painter.save() squareColumnIter = 0 squareLineIter = 0 squareCount = 0 for squareCount in range(self.__maximum): square = QRect( ( squareSideLength + separatorWidth ) * squareColumnIter + frameWidth * ( squareColumnIter + 1 ), ( squareSideLength + separatorWidth ) * squareLineIter + frameWidth * ( squareLineIter + 1 ), squareSideLength, squareSideLength ) painter.drawRect( square ) # Wir zeichnen die ausgekreuzten Quadrate if (self.__value > (self.__columnMax * squareLineIter + squareColumnIter)): painter.drawLine(square.bottomLeft(), square.topRight()) painter.drawLine(square.topLeft(), square.bottomRight()) squareColumnIter += 1 if ( squareColumnIter >= self.__columnMax ): squareColumnIter = 0 squareLineIter += 1 painter.restore()
def paintEvent(self, event): painter = QPainter(self) rect = self.geometry() text_rect = QRect(0, 0, rect.width(), rect.height()) painter.translate(text_rect.bottomLeft()) painter.rotate(-90) painter.drawText(QRect(QPoint(0, 0), QSize(rect.height(), rect.width())), Qt.AlignCenter, self.text()) painter.end()
def _drawStyledBar(self, painter, option): rect = option.rect key = "fancy styledbar %d %d %d" % (rect.width(), rect.height(), theme.baseColor.rgb()) pixmap = QPixmap() p = painter if theme.usePixmapCache() and not QPixmapCache.find(key, pixmap): pixmap = QPixmap(rect.size()) p = QPainter(pixmap) rect = QRect(0, 0, rect.width(), rect.height()) horizontal = option.state & QStyle.State_Horizontal offset = self.window().mapToGlobal( option.rect.topLeft()) - self.mapToGlobal(option.rect.topLeft()) gradientSpan = QRect(offset, self.window().size()) if horizontal: theme.horizontalGradient(p, gradientSpan, rect) else: theme.verticalGradient(p, gradientSpan, rect) painter.setPen(theme.borderColor) if horizontal: lighter = QColor(255, 255, 255, 40) if self._topBorder: p.drawLine(rect.topLeft(), rect.topRight()) p.setPen(lighter) p.drawLine(rect.topLeft() + QPoint(0, 1), rect.topRight() + QPoint(0, 1)) else: p.drawLine(rect.bottomLeft(), rect.bottomRight()) p.setPen(lighter) p.drawLine(rect.topLeft(), rect.topRight()) else: p.drawLine(rect.topLeft(), rect.bottomLeft()) p.drawLine(rect.topRight(), rect.bottomRight()) if theme.usePixmapCache() and not QPixmapCache.find(key, pixmap): painter.drawPixmap(rect.topLeft(), pixmap) p.end() del p QPixmapCache.insert(key, pixmap)
def paintEvent(self, event): painter = QPainter(self) rect = self.geometry() text_rect = QRect(0, 0, rect.width(), rect.height()) painter.translate(text_rect.bottomLeft()) painter.rotate(-90) painter.drawText( QRect(QPoint(0, 0), QSize(rect.height(), rect.width())), Qt.AlignCenter, self.text()) painter.end()
def _verticalGradientHelper(cls, painter: QPainter, spanRect: QRect, rect: QRect, lightColored): """ :type painter: QPainter :type spanRect: QRect :type rect: QRect :type lightColored: bool """ highlight = StyleHelper.highlightColor(lightColored) shadow = StyleHelper.shadowColor(lightColored) grad = QLinearGradient(spanRect.topRight(), spanRect.topLeft()) grad.setColorAt(0, highlight.lighter(117)) grad.setColorAt(1, shadow.darker(109)) painter.fillRect(rect, grad) light = QColor(255, 255, 255, 80) painter.setPen(light) painter.drawLine(rect.topRight() - QPoint(1, 0), rect.bottomRight() - QPoint(1, 0)) dark = QColor(0, 0, 0, 90) painter.setPen(dark) painter.drawLine(rect.topLeft(), rect.bottomLeft())