| 94 | self.update() |
| 95 | |
| 96 | def paintEvent(self, event): |
| 97 | super(MetroCircleProgress, self).paintEvent(event) |
| 98 | painter = QPainter(self) |
| 99 | painter.setRenderHint(QPainter.Antialiasing) |
| 100 | painter.fillRect(self.rect(), self.BackgroundColor) |
| 101 | painter.setPen(Qt.NoPen) |
| 102 | |
| 103 | for item, _ in self._items: |
| 104 | painter.save() |
| 105 | color = self.Color.toRgb() |
| 106 | color.setAlphaF(item.opacity) |
| 107 | painter.setBrush(color) |
| 108 | # 5<= radius <=10 |
| 109 | radius = qBound(self.Radius, self.Radius / 200 * |
| 110 | self.height(), 2 * self.Radius) |
| 111 | diameter = 2 * radius |
| 112 | painter.drawRoundedRect( |
| 113 | QRectF( |
| 114 | item.x / 100 * self.width() - diameter, |
| 115 | (self.height() - radius) / 2, |
| 116 | diameter, diameter |
| 117 | ), radius, radius) |
| 118 | painter.restore() |
| 119 | |
| 120 | def _initAnimations(self): |
| 121 | for index in range(5): # 5个小圆 |