| 146 | super().changeEvent(event) |
| 147 | |
| 148 | def paintEvent(self, event): |
| 149 | pt = QPainter() |
| 150 | pt.begin(self) |
| 151 | pt.setRenderHint(QPainter.Antialiasing) |
| 152 | |
| 153 | if self.on: |
| 154 | pen = QPen(self.onColor, 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin) |
| 155 | pt.setPen(pen) |
| 156 | brush = QBrush(self.onColor) |
| 157 | pt.setBrush(brush) |
| 158 | |
| 159 | r = self.radius |
| 160 | w = self.width |
| 161 | |
| 162 | pt.drawChord(r, 1, r, r, 90*16, 180*16) |
| 163 | pt.drawChord(r+w, 1, r, r, -90*16, 180*16) |
| 164 | pt.drawRect(r+r//2, 1, w, r) |
| 165 | |
| 166 | if self.handleAlpha: pt.setBrush(pt.background()) |
| 167 | else: pt.setBrush(QBrush(self.handleColor)) |
| 168 | offset = r*0.025 |
| 169 | pt.drawEllipse(r+offset/2+self.anim.current() , 1+offset/2 , r-offset , r-offset) |
| 170 | |
| 171 | else: |
| 172 | pen = QPen(self.offColor.darker(135), 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin) |
| 173 | pt.setPen(pen) |
| 174 | brush = QBrush(self.offColor) |
| 175 | pt.setBrush(brush) |
| 176 | |
| 177 | r = self.radius |
| 178 | w = self.width |
| 179 | |
| 180 | pt.drawChord(r, 1, r, r, 90*16, 180*16) |
| 181 | pt.drawChord(r+w, 1, r, r, -90*16, 180*16) |
| 182 | pt.drawRect(r+r//2, 1, w, r) |
| 183 | pt.setPen(QPen(self.offColor)) |
| 184 | pt.drawRect(r+r//2-2, 2, w+4, r-2) |
| 185 | |
| 186 | if self.handleAlpha: pt.setBrush(pt.background()) |
| 187 | else: pt.setBrush(QBrush(self.handleColor)) |
| 188 | pt.setPen(QPen(self.handleColor.darker(160))) |
| 189 | offset = r*0.025 |
| 190 | pt.drawEllipse(r+offset/2+self.anim.current() , 1+offset/2 , r-offset , r-offset) |
| 191 | |
| 192 | |
| 193 | font = pt.font() |
| 194 | pt.setFont(font) |
| 195 | pt.setPen(QPen(Qt.black)) |
| 196 | |
| 197 | pt.drawText(w+r*2+10, r//2+r//4, self.text) |
| 198 | |
| 199 | pt.end() |
| 200 | |
| 201 | if not self.anim.done(): self.update() |