def rebuildDataBrushIfNeeded(self): if not self.m_rebuildBrush or not self.m_gradientData: return self.m_rebuildBrush = False p = self.palette() dataBrush = QConicalGradient(QPointF(0.5, 0.5), self.m_nullPosition) dataBrush.setCoordinateMode(QGradient.StretchToDeviceMode) for i in range(0, len(self.m_gradientData)): dataBrush.setColorAt(1 - self.m_gradientData[i][0], self.m_gradientData[i][1]) p.setBrush(QPalette.Highlight, dataBrush) self.setPalette(p)
def paintEvent(self, event): painter = QPainter(self) painter.setRenderHint(painter.Antialiasing) tamanio = self.geometry().size() nuevoRect = QtCore.QRect(math.floor(self.anchoLinea / 2), math.floor(self.anchoLinea / 2), tamanio.width() - self.anchoLinea, tamanio.height() - self.anchoLinea) verde = QColor() verde.setNamedColor("#00FF00") amarillo = QColor() amarillo.setNamedColor("#FFFF00") rojo = QColor() rojo.setNamedColor("#FF0000") gradiente = QConicalGradient() gradiente.setCoordinateMode(QGradient.ObjectBoundingMode) gradiente.setAngle(60) gradiente.setColorAt(0, rojo) gradiente.setColorAt(0.25, amarillo) gradiente.setColorAt(0.50, verde) colorSeleccionado = QColor() colorSeleccionado.setNamedColor(self.colorDial) lapizTrazo = QPen() lapizTrazo.setStyle(QtCore.Qt.SolidLine) lapizTrazo.setWidth(self.anchoLinea) lapizTrazo.setBrush(colorSeleccionado) porcentaje = self.valor / float(self.maxValor - self.minValor) span = math.floor((self.finishAngle - self.startAngle) * porcentaje) painter.setPen(lapizTrazo) painter.drawArc(nuevoRect, self.startAngle * 16, span * 16) super(BKGauge, self).paintEvent(event)