Exemple #1
0
    def paintEvent(self, arg__1: QPaintEvent):
        # super(Push, self).paintEvent(arg__1)
        # lightgrey
        painter = QPainter()
        painter.begin(self)
        pen = QPen(QColor(162, 181, 205), 2, Qt.SolidLine)
        painter.setBrush(QBrush(QColor(255, 255, 255)))
        painter.setPen(pen)
        painter.setRenderHint(QPainter.Antialiasing, True)
        rect = QRect()
        rect.moveTo(1, 10)
        rect.setWidth(140)
        rect.setHeight(140)
        painter.drawRoundedRect(rect, 5, 5)
        painter.drawConvexPolygon(
            [QPoint(60, 10), QPoint(80, 10),
             QPoint(70, 1)])

        pen.setColor(QColor(255, 255, 255))
        painter.setPen(pen)
        painter.drawLine(63, 10, 77, 10)
        pen.setWidth(1)
        painter.setPen(pen)
        painter.drawPoints([QPoint(61, 10), QPoint(78, 10)])
        painter.end()
    def paint(self, painter: QPainter):

        brush = QBrush(QColor("#007430"))

        painter.setBrush(brush)
        painter.setPen(Qt.NoPen)
        painter.setRenderHint(QPainter.Antialiasing)

        itemSize = self.size()

        painter.drawRoundedRect(0, 0, itemSize.width(),
                                itemSize.height() - 10, 10, 10)

        if self.rightAligned:
            points = [
                QPointF(itemSize.width() - 10.0,
                        itemSize.height() - 10.0),
                QPointF(itemSize.width() - 20.0, itemSize.height()),
                QPointF(itemSize.width() - 30.0,
                        itemSize.height() - 10.0),
            ]
        else:
            points = [
                QPointF(10.0,
                        itemSize.height() - 10.0),
                QPointF(20.0, itemSize.height()),
                QPointF(30.0,
                        itemSize.height() - 10.0),
            ]
        painter.drawConvexPolygon(points)
Exemple #3
0
    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()
Exemple #4
0
    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 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)
Exemple #6
0
 def paint(self,
           painter: QtGui.QPainter,
           option: QtWidgets.QStyleOptionGraphicsItem,
           widget=None) -> None:
     super(ArrowButtonItem, self).paint(painter, option, widget)
     # draw arrow
     points = tripoints()
     poly = QtGui.QPolygon(points)
     if self.flip:  # flip arrow direction
         points[1].setX(-points[1].x())
     poly.translate(int(self.rect().topRight().x()),
                    int(self.rect().topRight().y()))
     painter.drawConvexPolygon(poly)
Exemple #7
0
    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()
Exemple #8
0
 def drawControls(self, painter: QtGui.QPainter):
     """draw left and right arrows, and maybe dots above for dragging"""
     if not self.isLast():
         points = tripoints()
         poly = QtGui.QPolygon(points)
         #poly.translate(self.right(), 0)
         poly.translate(self.topRight())
         painter.drawConvexPolygon(poly)
     if not self.isFirst():
         points = tripoints()
         points[1].setX(-points[1].x())
         poly = QtGui.QPolygon(points)
         #poly.translate(self.left(), 0)
         poly.translate(self.bottomLeft())
         painter.drawConvexPolygon(poly)
Exemple #9
0
class QPainterDrawText(unittest.TestCase):
    def setUp(self):
        self.painter = QPainter()
        self.text = "teste!"

    def tearDown(self):
        del self.text
        del self.painter

    def testDrawText(self):
        # bug #254
        rect = self.painter.drawText(100, 100, 100, 100, Qt.AlignCenter | Qt.TextWordWrap, self.text)
        self.assert_(isinstance(rect, QRect))

    def testDrawTextWithRect(self):
        # bug #225
        rect = QRect(100, 100, 100, 100)
        newRect = self.painter.drawText(rect, Qt.AlignCenter | Qt.TextWordWrap, self.text)

        self.assert_(isinstance(newRect, QRect))

    def testDrawTextWithRectF(self):
        """QPainter.drawText(QRectF, ... ,QRectF*) inject code"""
        rect = QRectF(100, 52.3, 100, 100)
        newRect = self.painter.drawText(rect, Qt.AlignCenter | Qt.TextWordWrap, self.text)

        self.assert_(isinstance(newRect, QRectF))

    def testDrawOverloads(self):
        """Calls QPainter.drawLines overloads, if something is
           wrong Exception and chaos ensues. Bug #395"""
        self.painter.drawLines([QLine(QPoint(0, 0), QPoint(1, 1))])
        self.painter.drawLines([QPoint(0, 0), QPoint(1, 1)])
        self.painter.drawLines([QPointF(0, 0), QPointF(1, 1)])
        self.painter.drawLines([QLineF(QPointF(0, 0), QPointF(1, 1))])
        self.painter.drawPoints([QPoint(0, 0), QPoint(1, 1)])
        self.painter.drawPoints([QPointF(0, 0), QPointF(1, 1)])
        self.painter.drawConvexPolygon(
            [QPointF(10.0, 80.0), QPointF(20.0, 10.0), QPointF(80.0, 30.0), QPointF(90.0, 70.0)]
        )
        self.painter.drawConvexPolygon([QPoint(10.0, 80.0), QPoint(20.0, 10.0), QPoint(80.0, 30.0), QPoint(90.0, 70.0)])
        self.painter.drawPolygon([QPointF(10.0, 80.0), QPointF(20.0, 10.0), QPointF(80.0, 30.0), QPointF(90.0, 70.0)])
        self.painter.drawPolygon([QPoint(10.0, 80.0), QPoint(20.0, 10.0), QPoint(80.0, 30.0), QPoint(90.0, 70.0)])
        self.painter.drawPolyline([QPointF(10.0, 80.0), QPointF(20.0, 10.0), QPointF(80.0, 30.0), QPointF(90.0, 70.0)])
        self.painter.drawPolyline([QPoint(10.0, 80.0), QPoint(20.0, 10.0), QPoint(80.0, 30.0), QPoint(90.0, 70.0)])
Exemple #10
0
    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()
Exemple #11
0
class QPainterDrawText(unittest.TestCase):

    def setUp(self):
        self.painter = QPainter()
        self.text = 'teste!'

    def tearDown(self):
        del self.text
        del self.painter

    def testDrawText(self):
        # bug #254
        rect = self.painter.drawText(100, 100, 100, 100,
                                     Qt.AlignCenter | Qt.TextWordWrap,
                                     self.text)
        self.assertTrue(isinstance(rect, QRect))

    def testDrawTextWithRect(self):
        # bug #225
        rect = QRect(100, 100, 100, 100)
        newRect = self.painter.drawText(rect, Qt.AlignCenter | Qt.TextWordWrap,
                                        self.text)

        self.assertTrue(isinstance(newRect, QRect))

    def testDrawTextWithRectF(self):
        '''QPainter.drawText(QRectF, ... ,QRectF*) inject code'''
        rect = QRectF(100, 52.3, 100, 100)
        newRect = self.painter.drawText(rect, Qt.AlignCenter | Qt.TextWordWrap,
                                        self.text)

        self.assertTrue(isinstance(newRect, QRectF))

    def testDrawOverloads(self):
        '''Calls QPainter.drawLines overloads, if something is
           wrong Exception and chaos ensues. Bug #395'''
        self.painter.drawLines([QLine(QPoint(0,0), QPoint(1,1))])
        self.painter.drawLines([QPoint(0,0), QPoint(1,1)])
        self.painter.drawLines([QPointF(0,0), QPointF(1,1)])
        self.painter.drawLines([QLineF(QPointF(0,0), QPointF(1,1))])
        self.painter.drawPoints([QPoint(0,0), QPoint(1,1)])
        self.painter.drawPoints([QPointF(0,0), QPointF(1,1)])
        self.painter.drawConvexPolygon([QPointF(10.0, 80.0),
                                        QPointF(20.0, 10.0),
                                        QPointF(80.0, 30.0),
                                        QPointF(90.0, 70.0)])
        self.painter.drawConvexPolygon([QPoint(10.0, 80.0),
                                        QPoint(20.0, 10.0),
                                        QPoint(80.0, 30.0),
                                        QPoint(90.0, 70.0)])
        self.painter.drawPolygon([QPointF(10.0, 80.0),
                                  QPointF(20.0, 10.0),
                                  QPointF(80.0, 30.0),
                                  QPointF(90.0, 70.0)])
        self.painter.drawPolygon([QPoint(10.0, 80.0),
                                  QPoint(20.0, 10.0),
                                  QPoint(80.0, 30.0),
                                  QPoint(90.0, 70.0)])
        self.painter.drawPolyline([QPointF(10.0, 80.0),
                                   QPointF(20.0, 10.0),
                                   QPointF(80.0, 30.0),
                                   QPointF(90.0, 70.0)])
        self.painter.drawPolyline([QPoint(10.0, 80.0),
                                   QPoint(20.0, 10.0),
                                   QPoint(80.0, 30.0),
                                   QPoint(90.0, 70.0)])
Exemple #12
0
    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()