def drawOverlay(self, painter: QPainter) -> None: if not self.__showOverlay: return radius: int = 80 painter.save() painter.setPen(Qt.NoPen) smallCircle: QPainterPath = QPainterPath() bigCircle: QPainterPath = QPainterPath() radius -= 1 smallCircle.addEllipse(-radius, -radius, radius * 2, radius * 2) radius *= 2 bigCircle.addEllipse(-radius, -radius + 140, radius * 2, radius * 2) # 高光的形状为小圆扣掉大圆的部分 highlight: QPainterPath = smallCircle - bigCircle linearGradient: QLinearGradient = QLinearGradient(0, -radius / 2, 0, 0) self.__overlayColor.setAlpha(100) linearGradient.setColorAt(0.0, self.__overlayColor) self.__overlayColor.setAlpha(30) linearGradient.setColorAt(1.0, self.__overlayColor) painter.setBrush(linearGradient) painter.rotate(-20) painter.drawPath(highlight) painter.restore()
def paintEvent(self, event): rect = QRect(10, 20, 80, 60) path = QPainterPath() path.moveTo(20, 80) path.lineTo(20, 30) path.cubicTo(80, 0, 50, 50, 80, 80) startAngle = 30 * 16 arcLength = 120 * 16 painter = QPainter(self) painter.setPen(self.pen) painter.setBrush(self.brush) if self.antialiased: painter.setRenderHint(QPainter.Antialiasing) for x in range(0, self.width(), 100): for y in range(0, self.height(), 100): painter.save() painter.translate(x, y) if self.transformed: painter.translate(50, 50) painter.rotate(60.0) painter.scale(0.6, 0.9) painter.translate(-50, -50) if self.shape == RenderArea.Line: painter.drawLine(rect.bottomLeft(), rect.topRight()) elif self.shape == RenderArea.Points: painter.drawPoints(RenderArea.points) elif self.shape == RenderArea.Polyline: painter.drawPolyline(RenderArea.points) elif self.shape == RenderArea.Polygon: painter.drawPolygon(RenderArea.points) elif self.shape == RenderArea.Rect: painter.drawRect(rect) elif self.shape == RenderArea.RoundedRect: painter.drawRoundedRect(rect, 25, 25, Qt.RelativeSize) elif self.shape == RenderArea.Ellipse: painter.drawEllipse(rect) elif self.shape == RenderArea.Arc: painter.drawArc(rect, startAngle, arcLength) elif self.shape == RenderArea.Chord: painter.drawChord(rect, startAngle, arcLength) elif self.shape == RenderArea.Pie: painter.drawPie(rect, startAngle, arcLength) elif self.shape == RenderArea.Path: painter.drawPath(path) elif self.shape == RenderArea.Text: painter.drawText(rect, Qt.AlignCenter, "PySide 2\nQt %s" % qVersion()) elif self.shape == RenderArea.Pixmap: painter.drawPixmap(10, 10, self.pixmap) painter.restore() painter.setPen(self.palette().dark().color()) painter.setBrush(Qt.NoBrush) painter.drawRect(QRect(0, 0, self.width() - 1, self.height() - 1))
def drawPointerIndicatorR(self, painter: QPainter) -> None: if not self.__showPointer: return radius: int = self.__radiusCircle - 15 painter.save() pen: QPen = QPen() pen.setWidth(1) pen.setColor(self.__progressColor) painter.setPen(pen) painter.setBrush(self.__progressColor) pts: QPolygon = QPolygon() pts.append(QPoint(-8, 0)) pts.append(QPoint(8, 0)) pts.append(QPoint(0, radius)) painter.rotate(self.__startAngle) degRotate: float = (360.0 - self.__startAngle - self.__endAngle) / ( self.__maxValue - self.__minValue) * (self.__value - self.__minValue) painter.rotate(degRotate) painter.drawConvexPolygon(pts) # 增加绘制圆角直线,与之前三角形重叠,形成圆角指针 pen.setCapStyle(Qt.RoundCap) pen.setWidthF(4) painter.setPen(pen) painter.drawLine(0, 0, 0, radius) # 绘制中心圆点 radius = radius // 4 painter.drawEllipse(-radius, -radius, radius * 2, radius * 2) painter.restore()
def drawPointerIndicator(self, painter: QPainter) -> None: if not self.__showPointer: return radius: int = self.__radiusCircle - 15 painter.save() painter.setPen(Qt.NoPen) painter.setBrush(self.__progressColor) pts: QPolygon = QPolygon() pts.append(QPoint(-8, 0)) pts.append(QPoint(8, 0)) pts.append(QPoint(0, radius)) painter.rotate(self.__startAngle) degRotate: float = (360.0 - self.__startAngle - self.__endAngle) / ( self.__maxValue - self.__minValue) * (self.__value - self.__minValue) painter.rotate(degRotate) painter.drawConvexPolygon(pts) # 绘制中心圆点 radius = radius // 4 painter.drawEllipse(-radius, -radius, radius * 2, radius * 2) painter.restore()
def paintEvent(self, event: QPaintEvent): p = QPainter(self) p.setBrush(QtCore.Qt.blue) taille = min(self.width(), self.height()) p.drawRect(10, 10, taille - 20, taille - 20) p.setBrush(QtCore.Qt.yellow) p.drawEllipse(20, 20, taille - 40, taille - 40) p.save() p.translate(taille / 2, taille / 2) p.rotate(135 + (self.valeur * 270 / 100)) pen = QPen(QtCore.Qt.black, 10) p.setPen(pen) p.drawLine(0, 0, (taille - 40) / 3, 0) p.restore() pen = QPen(QtCore.Qt.black, 5) p.setPen(pen) p.setBrush(QtCore.Qt.red) p.drawEllipse((taille / 2) - 20, (taille / 2) - 20, 40, 40)
def paintEvent(self, event): rect = QRect(10, 20, 80, 60) path = QPainterPath() path.moveTo(20, 80) path.lineTo(20, 30) path.cubicTo(80, 0, 50, 50, 80, 80) startAngle = 30 * 16 arcLength = 120 * 16 painter = QPainter(self) painter.setPen(self.pen) painter.setBrush(self.brush) if self.antialiased: painter.setRenderHint(QPainter.Antialiasing) for x in range(0, self.width(), 100): for y in range(0, self.height(), 100): painter.save() painter.translate(x, y) if self.transformed: painter.translate(50, 50) painter.rotate(60.0) painter.scale(0.6, 0.9) painter.translate(-50, -50) if self.shape == RenderArea.Line: painter.drawLine(rect.bottomLeft(), rect.topRight()) elif self.shape == RenderArea.Points: painter.drawPoints(RenderArea.points) elif self.shape == RenderArea.Polyline: painter.drawPolyline(RenderArea.points) elif self.shape == RenderArea.Polygon: painter.drawPolygon(RenderArea.points) elif self.shape == RenderArea.Rect: painter.drawRect(rect) elif self.shape == RenderArea.RoundedRect: painter.drawRoundedRect(rect, 25, 25, Qt.RelativeSize) elif self.shape == RenderArea.Ellipse: painter.drawEllipse(rect) elif self.shape == RenderArea.Arc: painter.drawArc(rect, startAngle, arcLength) elif self.shape == RenderArea.Chord: painter.drawChord(rect, startAngle, arcLength) elif self.shape == RenderArea.Pie: painter.drawPie(rect, startAngle, arcLength) elif self.shape == RenderArea.Path: painter.drawPath(path) elif self.shape == RenderArea.Text: painter.drawText(rect, Qt.AlignCenter, "PySide 2\nQt %s" % qVersion()) elif self.shape == RenderArea.Pixmap: painter.drawPixmap(10, 10, self.pixmap) painter.restore() painter.setPen(self.palette().dark().color()) painter.setBrush(Qt.NoBrush) painter.drawRect(QRect(0, 0, self.width() - 1, self.height() - 1))
def paintEvent(self, event:QPaintEvent): p = QPainter(self) p.setBrush(Qt.blue) p.drawRect(10,10,self.width()-20, self.height()-20) p.setBrush(Qt.yellow) p.drawEllipse(20,20,self.width()-40, self.height()-40) p.save() p.translate(self.width()/2,self.height()/2) p.save() p.rotate((-90 + self.heure*30)+(self.minute)/2) pen = QPen(Qt.green,10) p.setPen(pen) p.drawLine(0,0,(self.width()-40)/5,0) p.restore() p.rotate(-90 + self.minute*6) pen = QPen(Qt.black, 10) p.setPen(pen) p.drawLine(0, 0, (self.width() - 40) / 3, 0) p.restore() p.setBrush(Qt.red) p.drawEllipse((self.width()/2)-20,(self.height()/2)-20,40, 40)
def doubleBufferPaint(self, buffer=None): self.blockSignals(True) #self.drawFrame(painter) if buffer is None: buffer = QImage(self.width(), self.height(), QImage.Format_RGB888) buffer.fill(Qt.black) # calculate offset and scale of droplet image pixmap scale_x, scale_y, offset_x, offset_y = self.get_from_image_transform() db_painter = QPainter(buffer) db_painter.setRenderHints(QPainter.Antialiasing | QPainter.NonCosmeticDefaultPen) db_painter.setBackground(QBrush(Qt.black)) db_painter.setPen(QPen(Qt.black, 0)) db_painter.drawPixmap(offset_x, offset_y, self._pixmap) pen = QPen(Qt.magenta, 1) pen_fine = QPen(Qt.blue, 1) pen.setCosmetic(True) db_painter.setPen(pen) # draw droplet outline and tangent only if evaluate_droplet was successful if self._droplet.is_valid: try: # transforming true image coordinates to scaled pixmap coordinates db_painter.translate(offset_x, offset_y) db_painter.scale(scale_x, scale_y) # drawing tangents and baseline db_painter.drawLine(*self._droplet.line_l) db_painter.drawLine(*self._droplet.line_r) db_painter.drawLine(*self._droplet.int_l, *self._droplet.int_r) # move origin to ellipse origin db_painter.translate(*self._droplet.center) # draw diagnostics # db_painter.setPen(pen_fine) # # lines parallel to coordinate axes # db_painter.drawLine(0,0,20*scale_x,0) # db_painter.drawLine(0,0,0,20*scale_y) # # angle arc # db_painter.drawArc(-5*scale_x, -5*scale_y, 10*scale_x, 10*scale_y, 0, -self._droplet.tilt_deg*16) # rotate coordinates to ellipse tilt db_painter.rotate(self._droplet.tilt_deg) # draw ellipse # db_painter.setPen(pen) db_painter.drawEllipse(-self._droplet.maj / 2, -self._droplet.min / 2, self._droplet.maj, self._droplet.min) # # major and minor axis for diagnostics # db_painter.drawLine(0, 0, self._droplet.maj/2, 0) # db_painter.drawLine(0, 0, 0, self._droplet.min/2) except Exception as ex: logging.error(ex) db_painter.end() self.blockSignals(False) return buffer
def paintEvent(self, event: PySide2.QtGui.QPaintEvent): painter = QPainter(self) if self.orientation is None: return if self.image is not None: painter.save() image_width = self.image.width() image_height = self.image.height() if self.orientation % 2 == 0: scale = min(self.width() / image_width, self.height() / image_height) else: scale = min(self.width() / image_height, self.height() / image_width) target_width = image_width * scale target_height = image_height * scale padding_left = (self.width() - target_width) // 2 padding_top = (self.height() - target_height) // 2 painter.translate(self.width() / 2, self.height() / 2) painter.rotate(90 * self.orientation) painter.translate(-self.width() / 2, -self.height() / 2) painter.drawImage( QRect(padding_left, padding_top, target_width, target_height), self.image) painter.restore() if self.original_orientation is not None: painter.save() self.render_orientation_indicator(painter, self.original_orientation, target_height, target_width, pen_color=Qt.yellow, brush_color=Qt.darkYellow) painter.restore() if self.suggested_orientation is not None: painter.save() self.render_orientation_indicator(painter, self.suggested_orientation, target_height, target_width, pen_color=Qt.green, brush_color=Qt.darkGreen) painter.restore() if self.loading: painter.save() painter.setPen(self.palette().brush(QPalette.Foreground).color()) font = painter.font() font.setPointSize(font.pointSize() * 2) painter.setFont(font) draw_text(painter, self.width() / 2, self.height() / 2, Qt.AlignVCenter | Qt.AlignHCenter, "Loading...") painter.restore()
def paintEvent(self, event): pixmap = self.pixmap painter = QPainter(self) if self.isChecked( ): # Todo only if rotate button is clicked rotate. we have to fix this -> src.main.PdfConverter.rotate_button(self).isClicked() painter.translate(self.width(), 0) self.rotate += 90 self.rotate %= 360 painter.rotate(90) painter.drawPixmap(event.rect(), pixmap)
def paintEvent(self, paintEvent): painter = QPainter(self) r = self._frame.rect() r -= QMargins(3, 3, 3, 4) painter.drawRect(r) painter.translate(r.width() / 2 + r.left(), r.height() / 2 + r.top()) dp = math.degrees(self._p) pr = r.height() / 90 painter.translate(0, pr * dp) d = math.degrees(self._r) painter.rotate(d) painter.drawLine(-r.width() / 2, 0, r.width() / 2, 0) painter.drawLine(0, r.height() / 2, 0, -r.height() / 2)
def paintEvent(self, event: QPaintEvent): p = QPainter(self) p.setBrush(QtCore.Qt.blue) taille = min(self.width(), self.height()) p.drawRect(10, 10, taille - 20, taille - 20) p.setBrush(QtCore.Qt.yellow) p.drawEllipse(20, 20, taille - 40, taille - 40) p.translate(taille / 2, taille / 2) p.rotate(135 + self.valeur * 2.7) p.drawLine(0, 0, 0, taille / 3)
def paintEvent(self, event): side = min(self.width(), self.height()) curr_time = self._time painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.Antialiasing) painter.translate(self.width() / 2, self.height() / 2) # draw clock frame painter.setBrush(QBrush(self.background_color)) r = side / 2 painter.drawEllipse(QPoint(0, 0), side / 2, side / 2) for i in range(0, 12): x, y = self.rotate_point(0, -r * 0.95, i * 360 / 12) painter.drawEllipse(x - 3, y - 3, 6, 6) painter.setPen(self.text_color) for i in range(0, 12): x, y = self.rotate_point(0, -r * 0.85, i * 360 / 12) painter.drawText(QRect(x - 10, y - 10, 20, 20), Qt.AlignCenter, "%d" % i) painter.setPen(self.background_color) painter.setBrush(QBrush(self.min_pin_color)) for j in range(0, 60): if j % 5 != 0: x, y = self.rotate_point(0, -r * 0.95, j * 360 / 60) painter.drawEllipse(x - 1, y - 1, 2, 2) painter.setClipping(False) # draw hands painter.setBrush(QBrush(self.hour_pin_color)) painter.save() self.hour_pin[2] = QPoint(0, int(-r * 0.6)) painter.rotate(30.0 * (curr_time.hour() + curr_time.minute() / 60.0)) painter.drawConvexPolygon(self.hour_pin) painter.restore() painter.setBrush(QBrush(self.min_pin_color)) painter.save() self.minute_pin[2] = QPoint(0, int(-r * 0.9)) painter.rotate(6.0 * (curr_time.minute() + curr_time.second() / 60.0)) painter.drawConvexPolygon(self.minute_pin) painter.restore() painter.end()
def paintEvent(self, event): side = min(self.width(), self.height()) time = QTime.currentTime() painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) painter.translate(self.width() / 2, self.height() / 2) painter.scale(side / 200.0, side / 200.0) painter.setPen(Qt.NoPen) painter.setBrush(AnalogClock.hourColor) painter.save() painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0))) painter.drawConvexPolygon(AnalogClock.hourHand) painter.restore() painter.setPen(AnalogClock.hourColor) for i in range(12): painter.drawLine(88, 0, 96, 0) painter.rotate(30.0) painter.setPen(Qt.NoPen) painter.setBrush(AnalogClock.minuteColor) painter.save() painter.rotate(6.0 * (time.minute() + time.second() / 60.0)) painter.drawConvexPolygon(AnalogClock.minuteHand) painter.restore() painter.setPen(AnalogClock.minuteColor) for j in range(60): if (j % 5) != 0: painter.drawLine(92, 0, 96, 0) painter.rotate(6.0)
def paintEvent(self, event:QPaintEvent): p = QPainter(self) p.setBrush(QtCore.Qt.darkBlue) p.drawRect(10,10,self.width()-20, self.height()-20) p.setBrush(QtCore.Qt.white) p.drawEllipse(20,20,self.width()-40, self.height()-40) p.save() p.translate(self.width()/1.4, self.height()/1.4) p.rotate(270+self.valeurMSec*0.36) pen = QPen(QtCore.Qt.black, 2, QtCore.Qt.SolidLine, QtCore.Qt.RoundCap) p.setPen(pen) p.drawLine(0, 0, (self.width()-40)/6, 0) p.restore() p.save() p.translate(self.width()/2, self.height()/2) p.rotate(270+self.valeurSec*6) pen = QPen(QtCore.Qt.black, 6, QtCore.Qt.DashDotDotLine, QtCore.Qt.RoundCap) p.setPen(pen) p.drawLine(0, 0, (self.width()-40)/3, 0) p.restore() p.save() p.translate(self.width() / 2, self.height() / 2) p.rotate(270 + self.valeurMin * 6) pen = QPen(QtCore.Qt.green, 10, QtCore.Qt.SolidLine, QtCore.Qt.RoundCap) p.setPen(pen) p.drawLine(0, 0, (self.width() - 40) / 3, 0) p.restore() p.save() p.translate(self.width() / 2, self.height() / 2) p.rotate(270 + self.valeurHeu * 30) pen = QPen(QtCore.Qt.red, 10, QtCore.Qt.SolidLine, QtCore.Qt.RoundCap) p.setPen(pen) p.drawLine(0, 0, (self.width() - 200) / 3, 0) p.restore() p.setBrush(QtCore.Qt.red) p.drawEllipse((self.width()/2)-20, (self.height()/2)-20, 40, 40)
def paintEvent(self, paintEvent): painter = QPainter(self) r = self._frame.rect() r -= QMargins(3, 3, 3, 4) painter.drawRect(r) painter.translate(r.width() / 2 + r.left(), r.height() / 2 + r.top()) painter.drawLine(0, r.height() / 3, 0, -r.height() / 3) painter.rotate(self._y) painter.drawLine(0, -r.height() / 2, 3, -r.height() / 2 + 7) painter.drawLine(-3, -r.height() / 2 + 7, 3, -r.height() / 2 + 7) painter.drawLine(-3, -r.height() / 2 + 7, 0, -r.height() / 2) painter.drawLine(-r.height() / 2, 0, -r.height() / 2 + 5, 0) painter.drawLine(r.height() / 2, 0, r.height() / 2 - 5, 0) painter.drawLine(0, r.height() / 2, 0, r.height() / 2 - 5) for i in range(0, 360, 10): painter.drawLine(0, -r.height() / 2, 0, -r.height() / 2 + 3) painter.rotate(10)
def drawPointerCircle(self, painter: QPainter) -> None: if not self.__showPointer: return radius: int = 15 offset: int = self.__radiusCircle - 60 painter.save() painter.setPen(Qt.NoPen) painter.rotate(self.__startAngle) degRotate: float = (360.0 - self.__startAngle - self.__endAngle) / ( self.__maxValue - self.__minValue) * (self.__value - self.__minValue) painter.rotate(degRotate) painter.setBrush(self.__progressColor) painter.drawEllipse(-radius, radius + offset, radius * 2, radius * 2) painter.restore()
def paintEvent(self, event:QPaintEvent): p = QPainter(self) p.setBrush(QtCore.Qt.blue) p.drawRect(10,10,self.width()-20, self.height()-20) p.setBrush(QtCore.Qt.yellow) p.drawEllipse(20,20,self.width()-40, self.height()-40) p.save() p.translate(self.width()/2,self.height()/2)# p.rotate(135+self.valeur*2.7) pen = QPen(QtCore.Qt.black,10) p.setPen(pen) p.drawLine(0,0,(self.width()-40)/4, 0) p.restore() p.setBrush(QtCore.Qt.red) p.drawEllipse((self.width()/2)-20,(self.height()/2)-20,40,40)
def paintEvent(self, event: QPaintEvent): p = QPainter(self) p.setBrush(QtCore.Qt.blue) p.drawRect(10, 10, self.width() - 20, self.height() - 20) p.setBrush(QtCore.Qt.yellow) p.drawEllipse(20, 20, self.width() - 40, self.height() - 40) p.save() p.translate(self.width() / 2, self.height() / 2) # permet de centrer l'aiguille p.save() p.save() p.rotate(270 + (360 / 60) * self.sec) penSec = QPen(QtCore.Qt.black, 1) p.setPen(penSec) p.drawLine(0, 0, (self.width() - 40) / 3, 0) p.restore() p.rotate(270 + (360 / 60) * self.min) penMin = QPen(QtCore.Qt.black, 3) p.setPen(penMin) p.drawLine(0, 0, (self.width() - 40) / 3, 0) p.restore() p.rotate( 270 + (360 / 12) * (self.hour) + ((360 / 60) * (self.min)) / 30 ) # formule a trouver pour avoir une aiguille qui tourne progressivement penHour = QPen(QtCore.Qt.black, 5) p.setPen(penHour) p.drawLine(0, 0, (self.width() - 40) / 5, 0) p.restore() p.setBrush(QtCore.Qt.magenta) p.drawEllipse((self.width() / 2) - 20, (self.height() / 2) - 20, 40, 40)
def drawPointerTriangle(self, painter: QPainter) -> None: if not self.__showPointer: return radius: int = 20 offset: int = self.__radiusCircle - 25 painter.save() painter.setPen(Qt.NoPen) painter.setBrush(self.__progressColor) pts: QPolygon = QPolygon() pts.append(QPoint(-radius // 2, offset)) pts.append(QPoint(radius // 2, offset)) pts.append(QPoint(0, radius + offset)) painter.rotate(self.__startAngle) degRotate: float = (360.0 - self.__startAngle - self.__endAngle) / ( self.__maxValue - self.__minValue) * (self.__value - self.__minValue) painter.rotate(degRotate) painter.drawConvexPolygon(pts) painter.restore()
def paintEvent(self, event: QPaintEvent): p = QPainter(self) p.setBrush(QtCore.Qt.blue) p.drawRect(10, 10, self.width() - 20, self.height() - 20) p.setBrush(QtCore.Qt.yellow) p.drawEllipse(20, 20, self.width() - 40, self.height() - 40) p.save() p.translate(self.width() / 2, self.height() / 2) p.rotate( self.valeur * 3.6) #on lui dit de nous présenter les 360° sur une echelle de 100 #pour faire le compteur de vitesse de la voiture, le 0 on le met à 135°: 135+self.valeur*2.8 pen = QPen(QtCore.Qt.black, 8) p.setPen(pen) p.drawLine(0, 0, (self.width() - 40) / 3, 0) p.restore() p.setBrush(QtCore.Qt.red) p.drawEllipse((self.width() / 2) - 20, (self.height() / 2) - 20, 40, 40)
def paint_world(self, painter: QtGui.QPainter, world: World): painter.rotate(world.get_direction()) painter.translate(*world.get_center()) painter.drawLine(-100, 0, 200, 0) painter.drawLine(0, -100, 0, 200) # paint road painter.setPen(QtGui.QColor(0, 0, 0)) for seg in world.get_segments(None): x1, y1 = seg.from_ x2, y2 = seg.to painter.drawLine(x1, y1, x2, y2) # paint car painter.setPen(QtGui.QColor(100, 100, 200)) for veh in world.get_vehicles(None): painter.save() painter.translate(*veh.get_position()) painter.rotate(veh.get_rotate()) painter.drawRect(veh.get_bbox()) # draw detector rays angles = [rad / np.pi * 180.0 for rad in veh.detector_angles] dists = veh.detector_distances for angle, dist in zip(angles, dists): painter.save() painter.rotate(angle) if dist is np.inf: painter.drawLine(0.0, 0.0, 1000.0, 0.0) else: painter.drawLine(0.0, 0.0, dist, 0.0) painter.drawEllipse(QtCore.QPointF(dist, 0.0), 5.0, 5.0) painter.restore() painter.restore()
def paintEvent(self, event): hour_hand = [QPoint(7, 8), QPoint(-7, 8), QPoint(0, -40)] minute_hand = [QPoint(7, 8), QPoint(-7, 8), QPoint(0, -70)] second_hand = [QPoint(2, 8), QPoint(-2, 8), QPoint(0, -90)] hour_color = QColor(0x8b, 0, 0xff) minute_color = QColor(0, 0xbf, 0xff, 191) second_color = QColor(0xff, 0x82, 0xab, 191) side = min(self.width(), self.height()) painter = QPainter(self) # pre settings painter.setRenderHint(QPainter.Antialiasing) painter.translate(self.width() / 2, self.height() / 2) painter.scale(side / 200, side / 200) painter.setPen(Qt.NoPen) # draw hour scale & hour hand painter.setBrush(hour_color) painter.save() painter.rotate(30 * (self._hour + self._minute / 60)) painter.drawConvexPolygon(hour_hand) painter.restore() painter.setPen(hour_color) for i in range(12): painter.drawLine(88, 0, 96, 0) painter.rotate(30) painter.setPen(Qt.NoPen) # draw minute scale & minute hand painter.setBrush(minute_color) painter.save() painter.rotate(6 * (self._minute + self._second / 60)) painter.drawConvexPolygon(minute_hand) painter.restore() painter.setPen(minute_color) for i in range(60): if i % 5: painter.drawLine(92, 0, 96, 0) painter.rotate(6.0) painter.setPen(Qt.NoPen) # draw second scale & second hand painter.setBrush(second_color) painter.save() painter.rotate(6 * self._second) painter.drawConvexPolygon(second_hand) painter.restore()
def paintEvent(self, event: QPaintEvent): p = QPainter(self) #p.setBrush(Qt.blue) #p.drawRect(10,10,self.width()-20, self.height()-20) #p.setBrush(Qt.black) #p.drawEllipse(20,20,self.width()-40, self.height()-40) p.translate(0, 0) p.setBrush(QtCore.Qt.black) p.drawEllipse(0, 0, self.height(), self.height()) p.translate(self.height() / 2, self.height() / 2) angle_sec = 360. * self.valeur_sec / 60. angle_min = 360. * (self.valeur_min + self.valeur_sec / 60.) / 60. angle_h = 360. * (self.valeur_h + self.valeur_min / 60. + self.valeur_sec / 3600) / 12. #angle_sec = 360 * self.valeur_sec / 60 #angle_min = 360 * ( self.valeur_min) / 60 #angle_h = 360 * ( self.valeur_h) / 12 p.rotate(180) p.rotate(angle_sec) #p.setPen(QtCore.Qt.red,4) pen = QPen(Qt.green, 2) p.setPen(pen) p.drawLine(0, 0, 0, 0.85 * self.height() / 2) p.rotate(-1 * angle_sec) p.rotate(angle_min) pen = QPen(Qt.blue, 3) p.setPen(pen) p.drawLine(0, 0, 0, 0.8 * self.height() / 2) p.rotate(-1 * angle_min) p.rotate(angle_h) pen = QPen(Qt.red, 4) p.setPen(pen) p.drawLine(0, 0, 0, 0.6 * self.height() / 2) p.setBrush(QtCore.Qt.green) pen = QPen(Qt.green, 3) p.setPen(pen) p.translate(self.height() / 100, self.height() / 100) p.drawEllipse(0, 0, -1 * self.height() / 50, -1 * self.height() / 50)