def paintEvent(self, ev=None): drawing_rect = QRect() drawing_rect.setX(self._padding) drawing_rect.setY(self._padding) drawing_rect.setWidth(self._size) drawing_rect.setHeight(self._size) painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) gradient = QConicalGradient() gradient.setCenter(drawing_rect.center()) gradient.setAngle(-self._angle - self._size / 10) gradient.setColorAt(0, QColor(178, 255, 246)) gradient.setColorAt(1, QColor(5, 44, 50)) pen = QPen(QBrush(gradient), self._size // 10) pen.setCapStyle(Qt.RoundCap) painter.setPen(pen) painter.drawArc(drawing_rect, -self._angle * 16, 300 * 16)
# 线性渐变 linearGradient = QLinearGradient(0, 0, 1, 1) linearGradient.setColorAt(0.0, Qt.green) linearGradient.setColorAt(0.2, Qt.white) linearGradient.setColorAt(0.4, Qt.blue) linearGradient.setColorAt(0.6, Qt.red) linearGradient.setColorAt(1.0, Qt.yellow) print(GradientUtils.styleSheetCode(linearGradient)) # 辐射渐变 radialGradient = QRadialGradient(0, 0, 1, 1, 110) radialGradient.setColorAt(0, Qt.green) radialGradient.setColorAt(0.4, Qt.blue) radialGradient.setColorAt(1.0, Qt.yellow) print(GradientUtils.styleSheetCode(radialGradient)) # 弧度渐变 conicalGradient = QConicalGradient(0.5, 0.5, 0) conicalGradient.setAngle(0.5) conicalGradient.setColorAt(0, Qt.green) conicalGradient.setColorAt(0.2, Qt.white) conicalGradient.setColorAt(0.4, Qt.blue) conicalGradient.setColorAt(0.6, Qt.red) conicalGradient.setColorAt(0.8, Qt.yellow) print(GradientUtils.styleSheetCode(conicalGradient)) print(GradientUtils.styleSheetCode(QColor(Qt.blue)))
def drawWidget(self, painter): # Поиск лучшего местоположения для томата size = self.size() x, y = size.width(), size.height() sec = self.current_time % 60 min = self.current_time // 60 angle = self.current_time / self.default_time if sec and min: rend_text = "{}:{}".format(min, sec) elif sec: rend_text = "{}".format(sec) elif min: rend_text = "{}:0".format(min) else: rend_text = "0" self.is_active = 0 self.current_time = self.default_time self.alarmSound.play() if x < y - 70: center = (x / 2, (y - 20) / 2 + 20) notcenter = x / 2 - 20 else: center = (x / 2, y / 2 + 20) notcenter = y / 2 - 60 gradient = QConicalGradient(QPointF(*center), 0) gradient.setAngle(90) gradient.setColorAt(0, QColor("911e42")) if angle != 1 or not self.is_active: gradient.setColorAt(1, QColor("#4a75c1")) if self.is_active: gradient.setColorAt(angle, QColor("#9c7130")) brush = QBrush(gradient) painter.setBrush(brush) self.centerx = center[0] self.highy = center[1] - notcenter self.font = QFont("Helvetica [Cronyx]", int(notcenter / 6)) painter.setFont(self.font) painter.drawEllipse(QPointF(*center), notcenter, notcenter) pen = QPen(QColor("#111100")) painter.setPen(pen) painter.drawText(*center, rend_text) gradient = QConicalGradient(QPointF(x / 4, self.highy / 2), 0) gradient.setAngle(90) gradient.setColorAt(0, QColor("#faff53")) gradient.setColorAt(0.125, QColor("#23c900")) gradient.setColorAt(0.25, QColor("#faff53")) gradient.setColorAt(0.375, QColor("#23c900")) gradient.setColorAt(0.5, QColor("#faff53")) gradient.setColorAt(0.625, QColor("#23c900")) gradient.setColorAt(0.75, QColor("#faff53")) gradient.setColorAt(0.875, QColor("#23c900")) gradient.setColorAt(1, QColor("#faff53")) painter.setBrush(gradient) painter.drawRect( QRectF(QPoint(0, 0), QPoint(self.centerx, self.highy - 1))) gradient = QConicalGradient(QPointF(x * 3 / 4, self.highy / 2), 0) gradient.setColorAt(0, QColor("#fff0f0")) gradient.setColorAt(0.1, QColor("#f4432a")) gradient.setColorAt(0.4, QColor("#f4432a")) gradient.setColorAt(0.5, QColor("#fff0f0")) gradient.setColorAt(0.6, QColor("#f4432a")) gradient.setColorAt(0.9, QColor("#f4432a")) gradient.setColorAt(1, QColor("#fff0f0")) painter.setBrush(gradient) painter.drawRect( QRectF(QPoint(x, 0), QPoint(self.centerx, self.highy - 1)))