示例#1
0
    def paintEvent(self, event):
        # 设置阴影
        painter_path = QPainterPath()
        painter_path.setFillRule(Qt.WindingFill)

        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.fillPath(painter_path, QBrush(Qt.white))
        # 阴影颜色
        color = QColor(0, 250, 255, 50)
        for i in range(10):
            i_path = QPainterPath()
            i_path.setFillRule(Qt.WindingFill)
            ref = QRectF(10 - i, 10 - i,
                         self.width() - (10 - i) * 2,
                         self.height() - (10 - i) * 2)
            i_path.addRoundedRect(ref, 20, 20)
            color.setAlpha(150 - i**0.5 * 50.0)
            painter.setPen(color)
            painter.drawPath(i_path)

        # 圆角
        painter_rect = QPainter(self)
        painter_rect.setRenderHint(QPainter.Antialiasing)  # 抗锯齿
        color_bg = QColor(170, 248, 248, 240)  # 设置背警色
        painter_rect.setBrush(color_bg)
        painter_rect.setPen(Qt.transparent)

        self._rect = self.rect()
        self._rect.setLeft(15)
        self._rect.setTop(15)
        self._rect.setWidth(self._rect.width() - 15)
        self._rect.setHeight(self._rect.height() - 15)
        painter_rect.drawRoundedRect(self._rect, 15, 15)
示例#2
0
def generateCode(article, week, lot):
    #function returns QPicture object containing DataMatrix code with given article, week, lot
    toBeEncoded = 'S/N %s, Lot %s, Date %s' % (article, lot, week)
    bar = toBeEncoded.encode('utf-8')
    encoded_bar = dmtx.encode(bar)
    img = Image.frombytes('RGB', (encoded_bar.width, encoded_bar.height),
                          encoded_bar.pixels)
    img = img.resize(qr_size)
    qimg = ImageQt(img)

    picture = QPicture()
    painter = QPainter()
    painter.begin(picture)

    if frame_options['pen-color'] != Qt.Qt.white:
        painter.setBrush(QBrush(Qt.Qt.white))
    painter.setFont(QFont(font['family'], font['size'], font['weight']))
    if frame_options['pen-color'] != Qt.Qt.white:
        old_pen = painter.pen()
        painter.setPen(
            QPen(frame_options['pen-color'], frame_options['pen-width']))
        painter.drawRoundedRect(0, 0, *label_size, frame_options['radius'],
                                frame_options['radius'])
        painter.setPen(old_pen)
    painter.drawText(*item_positions['article'], "S/N " + article)
    painter.drawText(*item_positions['week'], "Date " + week)
    painter.drawText(*item_positions['lot'], "Lot " + lot)
    painter.drawImage(*item_positions['code'], qimg)

    painter.end()
    return picture
示例#3
0
    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,
                                     "PyQt by\nRiverbank Computing")
                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))
示例#4
0
    def paintEvent(self, event):
        if not self.displayedWhenStopped and not self.isAnimated():
            return

        width = min(self.width(), self.height())

        p = QPainter(self)
        p.setRenderHint(QPainter.Antialiasing)

        outerRadius = (width - 1) * 0.5
        innerRadius = (width - 1) * 0.5 * 0.38

        capsuleHeight = outerRadius - innerRadius
        capsuleWidth = capsuleHeight * 0.23 if width > 32 else capsuleHeight * 0.35
        capsuleRadius = capsuleWidth / 2

        for i in range(12):
            color = QColor(self.color)
            color.setAlphaF(float(1.0 - float(i / 12.0)))
            p.setPen(Qt.NoPen)
            p.setBrush(color)
            p.save()
            p.translate(self.rect().center())
            p.rotate(self.angle - float(i * 30.0))
            p.drawRoundedRect(-capsuleWidth * 0.5,\
                              -(innerRadius + capsuleHeight),\
                              capsuleWidth,\
                              capsuleHeight,\
                              capsuleRadius,\
                              capsuleRadius)
            p.restore()
示例#5
0
    def __init__(self, text, parent):
        super(DragLabel, self).__init__(parent)

        metric = QFontMetrics(self.font())
        size = metric.size(Qt.TextSingleLine, text)

        image = QImage(size.width() + 12,
                       size.height() + 12, QImage.Format_ARGB32_Premultiplied)
        image.fill(qRgba(0, 0, 0, 0))

        font = QFont()
        font.setStyleStrategy(QFont.ForceOutline)

        painter = QPainter()
        painter.begin(image)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.setBrush(Qt.white)
        painter.drawRoundedRect(
            QRectF(0.5, 0.5,
                   image.width() - 1,
                   image.height() - 1), 25, 25, Qt.RelativeSize)

        painter.setFont(font)
        painter.setBrush(Qt.black)
        painter.drawText(QRect(QPoint(6, 6), size), Qt.AlignCenter, text)
        painter.end()

        self.setPixmap(QPixmap.fromImage(image))
        self.labelText = text
示例#6
0
    def paintEvent(self, event):
        # This method is, in practice, drawing the contents of
        # your window.

        # get current window size
        s = self.size()
        qp = QPainter()
        qp.begin(self)
        qp.setRenderHint(QPainter.Antialiasing, True)
        qp.setPen(self.penColor)
        qp.setBrush(self.fillColor)
        qp.drawRect(0, 0, s.width(), s.height())

        # drawpopup
        qp.setPen(self.popup_penColor)
        qp.setBrush(self.popup_fillColor)
        popup_width = 300
        popup_height = 120
        ow = int(s.width()/2-popup_width/2)
        oh = int(s.height()/2-popup_height/2)
        qp.drawRoundedRect(ow, oh, popup_width, popup_height, 5, 5)

        font = QFont()
        font.setPixelSize(18)
        font.setBold(True)
        qp.setFont(font)
        qp.setPen(QColor(70, 70, 70))


        qp.end()
示例#7
0
    def paintEvent(self, event):
        label = "ON" if self.isChecked() else "OFF"
        bg_color = Qt.Qt.green if self.isChecked() else Qt.Qt.red

        radius = 10
        width = 32
        center = self.rect().center()

        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.translate(center)
        painter.setBrush(QColor(170, 170, 170))

        pen = QPen(Qt.Qt.white)
        pen.setWidth(2)
        painter.setPen(pen)

        painter.drawRoundedRect(
            Qt.QRect(-width, -radius, 2 * width, 2 * radius), radius, radius)
        painter.setBrush(QBrush(bg_color))
        sw_rect = Qt.QRect(-radius, -radius, width + radius, 2 * radius)
        if not self.isChecked():
            sw_rect.moveLeft(-width)
        painter.drawRoundedRect(sw_rect, radius, radius)
        painter.drawText(sw_rect, Qt.Qt.AlignCenter, label)
示例#8
0
    def drawPrimitive(self,
                      element,
                      style_option: QStyleOption,
                      painter: QPainter,
                      widget=None):
        if element == QStyle.PE_FrameGroupBox:
            top_margin = max(
                self.pixelMetric(QStyle.PM_ExclusiveIndicatorHeight),
                style_option.fontMetrics.height()) + 3

            frame_rect = style_option.rect.adjusted(0, top_margin, -1, -1)
            tab_frame_color = get_tab_frame_color(style_option.palette)

            painter.save()
            painter.setRenderHint(QPainter.Antialiasing)
            painter.translate(0.5, 0.5)
            painter.setPen(
                merged_colors(get_outline_color(style_option.palette),
                              tab_frame_color))
            painter.setBrush(
                merged_colors(style_option.palette.window().color(),
                              tab_frame_color))
            painter.drawRoundedRect(frame_rect, rounded_rect_radius(),
                                    rounded_rect_radius())
            painter.restore()
        else:
            QProxyStyle.drawPrimitive(self, element, style_option, painter,
                                      widget)
示例#9
0
    def paintEvent(self, event):
        if (not self.m_displayedWhenStopped) and (not self.isAnimated()):
            return

        width = min(self.width(), self.height())

        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)

        outerRadius = (width - 1) * 0.5
        innerRadius = (width - 1) * 0.5 * 0.4375

        capsuleHeight = outerRadius - innerRadius
        capsuleWidth = width * 3 / 32
        capsuleRadius = capsuleWidth / 2

        for i in range(0, 12):
            color = QtGui.QColor(self.m_color)

            if self.isAnimated():
                color.setAlphaF(1.0 - (i / 12.0))
            else:
                color.setAlphaF(0.2)

            painter.setPen(Qt.NoPen)
            painter.setBrush(color)
            painter.save()
            painter.translate(self.rect().center())
            painter.rotate(self.m_angle - (i * 30.0))
            painter.drawRoundedRect(capsuleWidth * -0.5,
                                    (innerRadius + capsuleHeight) * -1,
                                    capsuleWidth, capsuleHeight, capsuleRadius,
                                    capsuleRadius)
            painter.restore()
示例#10
0
 def getFileIcon(self):
     #
     _text = Path(self.alt).name
     _suffix = Path(self.alt).suffix.upper()
     _suffix = _suffix[1:] if _suffix else "(Unknown)"
     _pixmap = QPixmap(120, 120)
     _pixmap.fill(QColor(0, 0, 0, 0))
     _painter = QPainter(_pixmap)
     _painter.setRenderHints(QPainter.Antialiasing
                             | QPainter.TextAntialiasing)
     # draw rounded rect
     _pen = _painter.pen()
     _pen.setWidth(2)
     _painter.setPen(_pen)
     _painter.drawRoundedRect(QRect(1, 1, 118, 118), 15, 15)
     # draw suffix text
     _rect = QRect(8, 10, 108, 35)  #100*25
     _painter.setPen(QPen(QColor("#0f59a4")))
     _painter.setFont(CFG.FONT_ICON_SUFFIX('MFHistoryItem'))
     _painter.drawText(_rect, Qt.AlignHCenter | Qt.TextSingleLine, _suffix)
     _painter.setPen(_pen)
     # draw splitter
     _painter.drawLine(1, 40, 118, 40)
     # draw suffix text
     _rect = QRect(8, 45, 108, 110)  #100*65
     _painter.setFont(CFG.FONT_ICON_NAME('MFHistoryItem'))
     _fm = QFontMetrics(_painter.font())
     # _elided_text = _fm.elidedText(_text, Qt.ElideMiddle, _rect.width(), Qt.TextWrapAnywhere)
     _painter.drawText(_rect, Qt.AlignHCenter | Qt.TextWrapAnywhere, _text)
     del _painter
     return _pixmap
示例#11
0
def draw_rgb(painter: QPainter, size: int, color: QColor):
    r, g, b, _ = color.getRgb()
    rgb = list(map(str, [r, g, b]))

    text_color, back_color = Qt.black, Qt.white

    w_rgb, h_rgb = size // 4, size // 6
    font = get_optimal_font(FAMILY_FONT, w_rgb, h_rgb, text='255')
    font.setWeight(QFont.Bold)

    y = size - size // 4
    indent = (size * 0.25) // 4
    radius = 30

    for i, value in enumerate(rgb):
        x = indent + indent * i + w_rgb * i

        painter.save()
        painter.setPen(Qt.NoPen)
        painter.setBrush(back_color)
        painter.drawRoundedRect(x, y, w_rgb, h_rgb, radius, radius, Qt.RelativeSize)
        painter.restore()

        painter.save()
        painter.setPen(text_color)
        painter.setFont(font)
        painter.drawText(x, y, w_rgb, h_rgb, Qt.AlignCenter, value)
        painter.restore()
示例#12
0
    def paintEvent(self, event):
        super(FramelessWindow, self).paintEvent(event)

        m = 9

        path = QPainterPath()
        path.setFillRule(Qt.WindingFill)
        path.addRect(m, m, self.width() - m * 2, self.height() - m * 2)

        painter = QPainter(self)
        painter.fillPath(path, QBrush(Qt.white))

        color = QColor(100, 100, 100, 100)
        for i in range(m):
            path = QPainterPath()
            path.setFillRule(Qt.WindingFill)
            path.addRoundedRect(m - i, m - i,
                                self.width() - (m - i) * 2,
                                self.height() - (m - i) * 2, 1, 1)
            color.setAlpha(100 - 10 * i)
            painter.setPen(QPen(color, 1, Qt.SolidLine))
            painter.drawRoundedRect(
                QRect(m - i, m - i,
                      self.width() - (m - i) * 2,
                      self.height() - (m - i) * 2), 0, 0)
示例#13
0
    def __init__(self, text, parent):
        super(DragLabel, self).__init__(parent)

        metric = QFontMetrics(self.font())
        size = metric.size(Qt.TextSingleLine, text)

        image = QImage(size.width() + 12, size.height() + 12, QImage.Format_ARGB32_Premultiplied)
        image.fill(qRgba(0, 0, 0, 0))

        font = QFont()
        font.setStyleStrategy(QFont.ForceOutline)

        painter = QPainter()
        painter.begin(image)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.setBrush(Qt.white)
        painter.drawRoundedRect(QRectF(0.5, 0.5, image.width() - 1, image.height() - 1), 25, 25, Qt.RelativeSize)

        painter.setFont(font)
        painter.setBrush(Qt.black)
        painter.drawText(QRect(QPoint(6, 6), size), Qt.AlignCenter, text)
        painter.end()

        self.setPixmap(QPixmap.fromImage(image))
        self.labelText = text
示例#14
0
class RoundedPushButton1(QPushButton):
    def __init__(self,parent, default_wide, default_high,text=''):
        QPushButton.__init__(self, parent)
        #self.resize(100,80)
        self.default_high=default_high
        self.default_wide=default_wide
        self.xrd=self.default_wide/10
        #self.yrd=self.default_high/10
        self.yrd=self.xrd
        #self.resize(self.default_wide,self.default_high)

        self.backgroundColor = QPalette().light().color()
        self.backgroundColor.setRgb(157,157,157) #(220,203,231)
        #self.backgroundColor.setAlpha(0)
        self.brush=QBrush(Qt.SolidPattern)

        self.textlabel=textQLabel(self,text)

    def paintEvent(self,event):
        #brush.setStyle(Qt.Dense1Pattern)
        self.brush.setColor(self.backgroundColor)
        self.painter=QPainter(self)
        self.painter.setRenderHint(QPainter.Antialiasing)
        
        self.painter.setPen(Qt.NoPen)
        self.painter.setBrush(self.brush)
        self.painter.drawRoundedRect(QRect(0,0,self.default_wide,self.default_high), self.xrd, self.yrd)
        #self.painter.drawPixmap(self.imgx, self.imgy, self.piximg)
        self.painter.end()
示例#15
0
    def paintEvent(self, event):
        if not (self._imageRainbow or self._imageAlpha):
            return super(CColorSlider, self).paintEvent(event)

        option = QStyleOptionSlider()
        self.initStyleOption(option)
        # 背景Rect
        groove = self.style().subControlRect(QStyle.CC_Slider, option,
                                             QStyle.SC_SliderGroove, self)
        groove.adjust(3, 5, -3, -5)
        # 滑块Rect
        handle = self.style().subControlRect(QStyle.CC_Slider, option,
                                             QStyle.SC_SliderHandle, self)
        handle.setX(max(min(handle.x(), self.width() - self.height()), 0))
        handle.setWidth(self.height())
        handle.setHeight(self.height())
        radius = self.height() / 2
        painter = QPainter(self)
        painter.setPen(Qt.NoPen)
        painter.drawImage(
            groove,
            self._imageRainbow if self._imageRainbow else self._imageAlpha)

        if not self._imageCircle or not self._imageCircleHover:
            painter.setBrush(
                QColor(245, 245, 245) if option.state
                & QStyle.State_MouseOver else QColor(254, 254, 254))
            painter.drawRoundedRect(handle, radius, radius)
        else:
            painter.drawImage(
                handle, self._imageCircleHover if option.state
                & QStyle.State_MouseOver else self._imageCircle)
示例#16
0
    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,
                            "PyQt by\nRiverbank Computing")
                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))
示例#17
0
 def paintEvent(self, e):
     """ 绘制背景 """
     painter = QPainter(self)
     painter.setRenderHints(QPainter.Antialiasing | QPainter.SmoothPixmapTransform)
     painter.setPen(QPen(QColor(190, 190, 190, 150)))
     painter.setBrush(QBrush(QColor(227, 227, 227)))
     painter.drawRoundedRect(self.rect(), 8, 8)
示例#18
0
文件: meta.py 项目: zhiiker/FeelUOwn
    def paintEvent(self, e):
        """
        draw pixmap with border radius

        We found two way to draw pixmap with border radius,
        one is as follow, the other way is using bitmap mask,
        but in our practice, the mask way has poor render effects
        """
        if self._pixmap is None:
            return
        radius = 3
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.setRenderHint(QPainter.SmoothPixmapTransform)
        scaled_pixmap = self._pixmap.scaledToWidth(
            self.width(), mode=Qt.SmoothTransformation)
        size = scaled_pixmap.size()
        brush = QBrush(scaled_pixmap)
        painter.setBrush(brush)
        painter.setPen(Qt.NoPen)
        y = (size.height() - self.height()) // 2
        painter.save()
        painter.translate(0, -y)
        rect = QRect(0, y, self.width(), self.height())
        painter.drawRoundedRect(rect, radius, radius)
        painter.restore()
        painter.end()
示例#19
0
    def paintEvent(self, event):
        s = self.size()
        qp = QPainter()
        qp.begin(self)
        qp.setRenderHint(QPainter.Antialiasing, True)
        pen = QPen(Qt.NoPen)
        qp.setPen(pen)
        qp.setBrush(QColor(154, 205, 50))
        if self.__enabled:
            qp.setBrush(QColor(154, 190, 50))
            qp.drawRoundedRect(0, 0, s.width(), s.height(), 10, 10)

            # lg = QLinearGradient(0, 25, 70, 0)
            # lg.setColorAt(0, QColor(154, 184, 50))
            # lg.setColorAt(0.35, QColor(154, 210, 50))
            # lg.setColorAt(0.85, QColor(154, 184, 50))
            # qp.setBrush(lg)
            # qp.drawRoundedRect(1, 1, s.width() - 2, s.height() - 2, 8, 8)
        else:
            qp.setBrush(QColor(255, 255, 255))
            qp.drawRoundedRect(0, 0, s.width(), s.height(), 10, 10)

            # lg = QLinearGradient(5, 25, 60, 0)
            # lg.setColorAt(0, QColor(190, 190, 190))
            # lg.setColorAt(0.35, QColor(230, 230, 230))
            # lg.setColorAt(0.85, QColor(190, 190, 190))
            # qp.setBrush(lg)
            # qp.drawRoundedRect(1, 1, s.width() - 2, s.height() - 2, 8, 8)
        qp.end()
示例#20
0
    def paintEvent(self, QPaintEvent):
        self.updatePosition()
        painter = QPainter(self)
        painter.fillRect(self.rect(), Qt.transparent)
        painter.setRenderHint(QPainter.Antialiasing, True)

        if self._currentCounter >= self._numberOfLines:
            self._currentCounter = 0

        painter.setPen(Qt.NoPen)
        for i in range(0, self._numberOfLines):
            painter.save()
            painter.translate(self._innerRadius + self._lineLength,
                              self._innerRadius + self._lineLength)
            rotateAngle = float(360 * i) / float(self._numberOfLines)
            painter.rotate(rotateAngle)
            painter.translate(self._innerRadius, 0)
            distance = self.lineCountDistanceFromPrimary(
                    i, self._currentCounter, self._numberOfLines)
            color = self.currentLineColor(distance, self._numberOfLines,
                                          self._trailFadePercentage,
                                          self._minimumTrailOpacity,
                                          self._color)
            painter.setBrush(color)
            rect = QRect(0, -self._lineWidth/2,
                         self._lineLength, self._lineWidth)
            painter.drawRoundedRect(
                    rect, self._roundness, self._roundness, Qt.RelativeSize)
            painter.restore()
示例#21
0
    def paintEvent(self, paintEvent):
        painter = QPainter(self)
        painter.setBrush(QColor("#CCCCFF"))
        painter.setPen(QColor("#00FF00"))
        painter.setRenderHint(QPainter.Antialiasing)  ## 抗锯齿
        painter.drawRoundedRect(0, 0,
                                self.width() - 1,
                                self.height() - 1, 20, 20)
        painter.translate(self.width() / 2, self.height() / 2)
        painter.rotate(self.cnt)
        painter.translate(-self.width() / 2, -self.height() / 2)
        painter.drawPixmap(0, 0, self.width(), self.height(), self.pix)

        if self.cnt >= 360:
            self.cnt = 0
        else:
            self.cnt += 1


# #新建一个QTimer对象
# self.timer = QBasicTimer()
# self.timer.start(1000, self)
#
# # 覆写计时器事件处理函数timerEvent()
# def timerEvent(self, event):
# self.lcd.display(time.strftime("%X",time.localtime()))
示例#22
0
    def paintEvent(self, event):
        self._update_position()
        painter = QPainter(self)
        painter.fillRect(self.rect(), Qt.transparent)
        painter.setRenderHint(QPainter.Antialiasing, True)
        if self._current_counter > self._number_of_lines:
            self._current_counter = 0
        painter.setPen(Qt.NoPen)

        for i in range(self._number_of_lines):
            painter.save()
            painter.translate(self._inner_radius + self._line_length,
                              self._inner_radius + self._line_length)
            rotate_angle = 360.0 * i / self._number_of_lines
            painter.rotate(rotate_angle)
            painter.translate(self._inner_radius, 0)
            distance = self._line_count_distance_from_primary(
                i, self._current_counter, self._number_of_lines)
            color = self._current_line_color(distance, self._number_of_lines,
                                             self._trail_fade_percentage,
                                             self._minimum_trail_opacity,
                                             self._color)
            painter.setBrush(color)
            painter.drawRoundedRect(
                QRect(0, -self._line_width // 2, self.line_length,
                      self._line_length), self._roundness, Qt.RelativeSize)
            painter.restore()
示例#23
0
    def paintEvent(self, event):
        painter = QPainter(self)

        drawColor = Qt.gray if not self.file_over else Qt.blue

        pen = QPen()
        pen.setDashPattern([4, 2])
        pen.setWidth(3)
        pen.setColor(drawColor)
        painter.setPen(pen)

        painter.setRenderHint(QPainter.Antialiasing)

        # Rounded dashed rect
        painter.translate(self.width() / 2 - 60, self.height() / 2 - 60)
        painter.drawRoundedRect(0, 0, 120, 120, 25.0, 25.0)

        # Arrow
        painter.translate(22, 30)
        arrow = QPainterPath()
        arrow.moveTo(20, 40)
        arrow.lineTo(30, 40)
        arrow.lineTo(30, 1)
        arrow.lineTo(50, 1)
        arrow.lineTo(50, 40)
        arrow.lineTo(60, 40)
        arrow.lineTo(40, 60)
        arrow.closeSubpath()
        painter.setPen(Qt.NoPen)
        painter.setBrush(drawColor)
        painter.drawPath(arrow)
示例#24
0
    def paintEvent(self, event):
        if not self.isDisplayedWhenStopped() and not self.isRunning():
            return

        width = min(self.width(), self.height())

        p = QPainter(self)
        p.setRenderHint(QPainter.Antialiasing)

        outerRadius = (width-1) * 0.5
        innerRadius = (width-1) * 0.5 * 0.38

        capsuleHeight = outerRadius - innerRadius
        capsuleWidth  = capsuleHeight * 0.23 if width > 32 else capsuleHeight * 0.35
        capsuleRadius = capsuleWidth / 2

        for i in range(12):
            color = QColor(self.color)
            color.setAlphaF(float(1.0 - float(i / 12.0)))
            p.setPen(Qt.NoPen)
            p.setBrush(color)
            p.save()
            p.translate(self.rect().center())
            p.rotate(self._angle - float(i * 30.0))
            p.drawRoundedRect(-capsuleWidth * 0.5,
                              -(innerRadius + capsuleHeight),
                              capsuleWidth,
                              capsuleHeight,
                              capsuleRadius,
                              capsuleRadius)
            p.restore()
示例#25
0
 def paintEvent(self, event):
     paint = QPainter(self)
     paint.setBrush(QColor("#f5f5f5"))
     pen = QPen()
     pen.setColor(QColor("#f5f5f5"))
     paint.setPen(pen)
     paint.drawRoundedRect(self.rect(), 10.0, 10.0)
    def paintEvent(self, QPaintEvent):
        self.updatePosition()
        painter = QPainter(self)
        painter.fillRect(self.rect(), Qt.transparent)
        painter.setRenderHint(QPainter.Antialiasing, True)

        if self._currentCounter >= self._numberOfLines:
            self._currentCounter = 0

        painter.setPen(Qt.NoPen)
        for i in range(0, self._numberOfLines):
            painter.save()
            painter.translate(self._innerRadius + self._lineLength,
                              self._innerRadius + self._lineLength)
            rotateAngle = float(360 * i) / float(self._numberOfLines)
            painter.rotate(rotateAngle)
            painter.translate(self._innerRadius, 0)
            distance = self.lineCountDistanceFromPrimary(
                i, self._currentCounter, self._numberOfLines)
            color = self.currentLineColor(distance, self._numberOfLines,
                                          self._trailFadePercentage,
                                          self._minimumTrailOpacity,
                                          self._color)
            painter.setBrush(color)
            painter.drawRoundedRect(
                QRect(0, -self._lineWidth / 2, self._lineLength,
                      self._lineWidth), self._roundness, self._roundness,
                Qt.RelativeSize)
            painter.restore()
示例#27
0
    def paintEvent(self, event):
        """
        paints the fancy on/off button
        :param event: needs to be set, eventough no event is captured. It is so, because paintEvent is overwriting
            an existing function in QPushButton
        """
        label = "ON" if self.isChecked() else "OFF"
        bg_color = Qt.black

        radius = 10
        width = 32
        center = self.rect().center()

        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.translate(center)
        painter.setBrush(QColor(255, 255, 255))

        pen = QPen(Qt.gray)
        pen.setWidth(2)
        painter.setPen(pen)

        painter.drawRoundedRect(QRect(-width, -radius, 2 * width, 2 * radius),
                                radius, radius)
        painter.setBrush(QBrush(bg_color))
        sw_rect = QRect(-radius, -radius, width + radius, 2 * radius)
        if not self.isChecked():
            sw_rect.moveLeft(-width)
        painter.drawRoundedRect(sw_rect, radius, radius)
        painter.drawText(sw_rect, Qt.AlignCenter, label)
示例#28
0
    def paintEvent(self, event):
        painter = QPainter(self)

        if self.fUseCustomPaint:
            painter.setBrush(QColor(36, 36, 36))
            painter.setPen(QColor(62, 62, 62))
            painter.drawRect(2, 2, self.width()-4, self.height()-4)

            painter.setBrush(self.fViewBg)
            painter.setPen(self.fViewBg)
            painter.drawRect(3, 3, self.width()-6, self.height()-6)
        else:
            painter.setBrush(self.fViewBg)
            painter.setPen(self.fViewBg)
            painter.drawRoundedRect(3, 3, self.width()-6, self.height()-6, 3, 3)

        self.fScene.render(painter, self.fRenderTarget, self.fRenderSource, Qt.KeepAspectRatio)

        width  = self.fViewRect[iWidth]/self.fScale
        height = self.fViewRect[iHeight]/self.fScale

        if width > self.kInternalWidth:
            width = self.kInternalWidth
        if height > self.kInternalHeight:
            height = self.kInternalHeight

        # cursor
        painter.setBrush(self.fViewBrush)
        painter.setPen(self.fViewPen)
        painter.drawRect(self.fViewRect[iX]+self.fInitialX, self.fViewRect[iY]+3, width, height)

        if self.fUseCustomPaint:
            event.accept()
        else:
            QFrame.paintEvent(self, event)
示例#29
0
 def paintEvent(self, event):
     super(CAvatar, self).paintEvent(event)
     # 画笔
     painter = QPainter(self)
     painter.setRenderHint(QPainter.Antialiasing, True)
     painter.setRenderHint(QPainter.HighQualityAntialiasing, True)
     painter.setRenderHint(QPainter.SmoothPixmapTransform, True)
     # 绘制
     path = QPainterPath()
     diameter = min(self.width(), self.height())
     if self.shape == self.Circle:
         radius = int(diameter / 2)
     elif self.shape == self.Rectangle:
         radius = 4
     halfW = self.width() / 2
     halfH = self.height() / 2
     painter.translate(halfW, halfH)
     path.addRoundedRect(
         QRectF(-halfW, -halfH, diameter, diameter), radius, radius)
     painter.setClipPath(path)
     # 如果是动画效果
     if self.rotateAnimation.state() == QPropertyAnimation.Running:
         painter.rotate(self._angle)  # 旋转
         painter.drawPixmap(
             QPointF(-self.pixmap.width() / 2, -self.pixmap.height() / 2), self.pixmap)
     else:
         painter.drawPixmap(-int(halfW), -int(halfH), self.pixmap)
     # 如果在加载
     if self.loadingTimer.isActive():
         diameter = 2 * self.pradius
         painter.setBrush(
             QColor(45, 140, 240, (1 - self.pradius / 10) * 255))
         painter.setPen(Qt.NoPen)
         painter.drawRoundedRect(
             QRectF(-self.pradius, -self.pradius, diameter, diameter), self.pradius, self.pradius)
示例#30
0
    def paintEvent(self, event):
        p = QPainter(self)
        p.setRenderHint(QPainter.Antialiasing, True)
        p.save()

        side = self.height()
        p.scale(side / 100.0, side / 100.0)
        width = 100 * self.width()
        height = 100 * self.height()

        width = 100.0 * self.width() / self.height()
        height = 100.0

        pen = QPen(p.pen())

        pen.setColor(QColor(32, 32, 32))
        pen.setWidthF(6.0)
        p.setPen(pen)
        p.setBrush(Qt.black)
        p.drawRoundedRect(3, 3, width - 6, height - 6, 7, (7 * width) / height)

        w = (width - 2 * self.Y_OFFSET) / self.m_digits
        x = (self.m_digits - 1) * w
        h = height - 2 * self.Y_OFFSET
        c = self.m_value
        r = 0

        for i in range(self.m_digits):
            r = c % 10
            c = c // 10
            rect = QRectF(x + self.X_OFFSET, self.Y_OFFSET, w, h)
            self.m_svg.render(p, "d{}".format(r), rect)
            x -= w

        p.restore()
示例#31
0
文件: ibutton.py 项目: yuanjq/idoui
 def paintEvent(self, event):
     painter = QPainter(self)
     pixmap = None
     if self.status == STATUS_NORMAL:
         pixmap = self.normalPix
     elif self.status == STATUS_HOVER:
         pixmap = self.hoverPix
     elif self.status == STATUS_PRESS:
         pixmap = self.pressPix
     
     if not pixmap:
         return
     if not self._enable:
         if self.disablePix:
             painter.drawPixmap(0, 0, self.disablePix)
         else:
             image = pixmap.toImage()
             grayImg = convertToGray(image)
             painter.drawImage(0, 0, grayImg)
     elif self.autoRenderMask and self.status != STATUS_NORMAL:
         if self.status == STATUS_PRESS:
             painter.drawPixmap(1, 1, pixmap)
         else:
             painter.drawPixmap(0, 0, pixmap)
         painter.setPen(Qt.NoPen)
         painter.setBrush(QBrush(QColor(250, 250, 250, 100)))
         painter.drawRoundedRect(self.rect(), 2, 2)
     else:
         painter.drawPixmap(0, 0, pixmap)
示例#32
0
    def paintEvent(self, event):
        label = self.switch_label_1 if self.isChecked(
        ) else self.switch_label_2

        if self.isChecked():
            bg_color = QColor(self.switch_color_1)
        else:
            bg_color = QColor(self.switch_color_2)

        radius = 10
        width = self.width
        center = self.rect().center()

        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.translate(center)
        painter.setBrush(QColor(0, 0, 0))

        pen = QPen(Qt.black)
        pen.setWidth(2)
        painter.setPen(pen)

        painter.drawRoundedRect(QRect(-width, -radius, 2 * width, 2 * radius),
                                radius, radius)
        painter.setBrush(QBrush(bg_color))
        sw_rect = QRect(-radius, -radius, width + radius, 2 * radius)
        if not self.isChecked():
            sw_rect.moveLeft(-width)
        painter.drawRoundedRect(sw_rect, radius, radius)
        painter.setFont(QFont("Arial", self.font_size, QFont.Bold))
        painter.drawText(sw_rect, Qt.AlignCenter, label)
示例#33
0
    def paintEvent(self, event):
        qp = QPainter()
        qp.begin(self)
        qp.setPen(Qt.NoPen)
        qp.setBrush(self.brushes[1024])
        qp.drawRoundedRect(self.resetRect,5,5)
        qp.setPen(QColor(0xf9f6f2))
        qp.setFont(QFont("Thoma",26))
        qp.drawText(self.resetRect, "Reset", QTextOption(Qt.AlignHCenter|Qt.AlignVCenter))
        qp.setPen(QColor(0x776e65))
        qp.setFont(QFont("Thoma",13))
        qp.drawText(self.descriptionRect,"Join the numbers og get to the 2048 title!", QTextOption(Qt.AlignHCenter|Qt.AlignVCenter))
        for i in range(4):
            for j in range(4):
                rect=QRectF(10+j*100, 110+i*100, 80, 80)
                qp.setPen(Qt.NoPen)
                #qp.setBrush(QColor(255,80,0,160))
                qp.setBrush(self.brushes[self.player1.a[i,j]])
                qp.drawRoundedRect(rect, 5, 5)
                
                if self.player1.a[i,j] < 16:
                    qp.setPen(QColor(0x776e65))
                else:
                    qp.setPen(QColor(0xf9f6f2))
                if self.player1.a[i,j] > 512:
                	qp.setFont(QFont("Tahoma",30))
                elif self.player1.a[i,j] > 64:
                	qp.setFont(QFont("Tahoma",40))
                else:
	                qp.setFont(QFont("Tahoma",50))
                if self.player1.a[i,j] != 0:
                	qp.drawText(rect, str(self.player1.a[i,j]), QTextOption(Qt.AlignHCenter|Qt.AlignVCenter))           
        qp.end()
示例#34
0
    def paintEvent(self, event):
        label = self.text_true if self.isChecked() else self.text_false
        bg_color = Qt.darkGreen if self.isChecked() else Qt.red

        radius = 10
        width = 32
        center = self.rect().center()

        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.translate(center)
        painter.setBrush(QColor(0, 0, 0))

        pen = QPen(Qt.black)
        pen.setWidth(2)
        painter.setPen(pen)

        painter.drawRoundedRect(QRect(-width, -radius, 2 * width, 2 * radius),
                                radius, radius)
        painter.setBrush(QBrush(bg_color))
        sw_rect = QRect(-radius, -radius, width + radius, 2 * radius)
        if not self.isChecked():
            sw_rect.moveLeft(-width)
        painter.drawRoundedRect(sw_rect, radius, radius)
        painter.setPen(QPen(self.text_color))
        font = painter.font()
        font.setPixelSize(math.ceil(1.8 * radius))
        painter.setFont(font)

        painter.drawText(sw_rect, Qt.AlignCenter, label)
示例#35
0
def bullet(size=16,
           color=QColor(255, 255, 255),
           shape='square',
           scaleShape=1.0):
    """Draw a bullet and return it as a QPixmap

    Given `size` define size of pixmap (width=height)
    Given `color` define color bullet
    Given `shape` define bullet shape ('circle' or 'square')
    Given `scaleShape` define size of bullet in pixmap (1.0 = 100% / 0.5=50% for example)
    """
    pixmap = QPixmap(size, size)
    pixmap.fill(Qt.transparent)

    canvas = QPainter()
    canvas.begin(pixmap)
    canvas.setPen(Qt.NoPen)

    shapeWidth = size * scaleShape
    offset = (size - shapeWidth) / 2

    if shape == 'square':
        canvas.fillRect(offset, offset, shapeWidth, shapeWidth, color)
    elif shape == 'roundSquare':
        canvas.setBrush(color)
        canvas.drawRoundedRect(QRect(offset, offset, shapeWidth, shapeWidth),
                               25, 25, Qt.RelativeSize)
    elif shape == 'circle':
        canvas.setBrush(color)
        canvas.drawEllipse(offset, offset, shapeWidth, shapeWidth)
    else:
        raise EInvalidValue("Given `shape` value is not valid")

    canvas.end()
    return pixmap
示例#36
0
def get_frame_with_color_info(color: QColor, size=SIZE, rounded=True, as_bytes=False) -> Union[QImage, bytes]:
    image = QImage(size, size, QImage.Format_ARGB32)
    image.fill(Qt.transparent)

    painter = QPainter(image)
    painter.setRenderHint(QPainter.HighQualityAntialiasing)
    painter.setPen(Qt.NoPen)
    painter.setBrush(color)

    if rounded:
        painter.drawRoundedRect(0, 0, image.width(), image.height(), RADIUS, RADIUS, Qt.RelativeSize)
    else:
        painter.drawRect(0, 0, image.width(), image.height())

    draw_hex(painter, size, color)
    draw_rgb(painter, size, color)

    painter.end()

    if as_bytes:
        ba = QByteArray()
        buff = QBuffer(ba)
        buff.open(QIODevice.WriteOnly)
        image.save(buff, "PNG")
        return ba.data()

    return image
示例#37
0
    def paintEvent(self, event):
        # 调用父类的绘图事件
        super(Toast, self).paintEvent(event)
        try:
            self.raise_()
            height = self.get_font_size()
            # 编码为二进制并计算长度,不然中英文会导致长度不一或者错误
            width = len(self._text.encode('utf-8', "ignore")) * height * 0.8
            if height < self._min_height:
                height = self._min_height
            else:
                height = self._min_height * 2

            if width < self._min_width:
                width = self._min_width
            self.resize(width, height)
            if self._x_pos != 0 and self._y_pos != 0:
                self.move(self._x_pos - width / 2, self._y_pos - height / 2)
            painter = QPainter(self)
            # 设置渲染提示——反锯齿
            painter.setRenderHints(QPainter.Antialiasing
                                   | QPainter.TextAntialiasing)
            rectangle = QRectF(0, 0, width, height)
            brush = QBrush(QColor(self._background_color), Qt.SolidPattern)
            painter.setBrush(brush)
            painter.setPen(QPen(QColor(self._background_color)))
            # 为替换矩形的每个角而绘制的四分之一椭圆的 x/y 半径。
            painter.drawRoundedRect(rectangle, height / 2, height / 2,
                                    Qt.AbsoluteSize)
            self._draw_text(painter, rectangle, self._text)
        except Exception as e:
            logging.error(e)
示例#38
0
文件: post.py 项目: petervaro/coublet
 def on_draw(self, event):
     # Setup drawing object
     painter = QPainter(self)
     painter.setRenderHint(QPainter.Antialiasing)
     painter.setPen(Qt.NoPen)
     painter.setBrush(QBrush(CONSTANTS['panel_color_light'], Qt.SolidPattern))
     # Draw rounded rectangle
     painter.drawRoundedRect(self.rect(), *(POST_ROUNDNESS,)*2)
示例#39
0
    def createRoundButtonBackground(self, transform):
        scaledRect = transform.mapRect(QRect(0, 0,
                self.logicalSize.width(), self.logicalSize.height()))

        image = QImage(scaledRect.width(), scaledRect.height(),
                QImage.Format_ARGB32_Premultiplied)
        image.fill(QColor(0, 0, 0, 0).rgba())
        painter = QPainter(image)
        painter.setRenderHint(QPainter.SmoothPixmapTransform)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.setPen(Qt.NoPen)

        if Colors.useEightBitPalette:
            painter.setPen(QColor(120, 120, 120))
            if self.pressed:
                painter.setBrush(QColor(60, 60, 60))
            elif self.highlighted:
                painter.setBrush(QColor(100, 100, 100))
            else:
                painter.setBrush(QColor(80, 80, 80))
        else:
            outlinebrush = QLinearGradient(0, 0, 0, scaledRect.height())
            brush = QLinearGradient(0, 0, 0, scaledRect.height())

            brush.setSpread(QLinearGradient.PadSpread)
            highlight = QColor(255, 255, 255, 70)
            shadow = QColor(0, 0, 0, 70)
            sunken = QColor(220, 220, 220, 30)

            if self.type == TextButton.PANEL:
                normal1 = QColor(200, 170, 160, 50)
                normal2 = QColor(50, 10, 0, 50)
            else:
                normal1 = QColor(255, 255, 245, 60)
                normal2 = QColor(255, 255, 235, 10)

            if self.pressed:
                outlinebrush.setColorAt(0, shadow)
                outlinebrush.setColorAt(1, highlight)
                brush.setColorAt(0, sunken)
                painter.setPen(Qt.NoPen)
            else:
                outlinebrush.setColorAt(1, shadow)
                outlinebrush.setColorAt(0, highlight)
                brush.setColorAt(0, normal1)
                if not self.highlighted:
                    brush.setColorAt(1, normal2)
                painter.setPen(QPen(outlinebrush, 1))

            painter.setBrush(brush)

        if self.type == TextButton.PANEL:
            painter.drawRect(0, 0, scaledRect.width(), scaledRect.height())
        else:
            painter.drawRoundedRect(0, 0, scaledRect.width(),
                    scaledRect.height(), 10, 90, Qt.RelativeSize)

        return image
示例#40
0
 def setRoundMask(self):
     bmp = QPixmap(self.size())
     bmp.fill(Qt.white)
     p = QPainter(bmp)
     p.setRenderHint(QPainter.Antialiasing)
     p.setBrush(QBrush(Qt.white))
     p.setCompositionMode(QPainter.CompositionMode_Clear)
     p.drawRoundedRect(0, 0, self.width(), self.height(), 3, 3)
     p.end()
     self.setMask(QRegion(QBitmap(bmp)))
示例#41
0
 def paintEvent(self, event):
     painter = QPainter(self)
     if self.border:
         size = self.size()
         painter.setPen(Colors.eyegrade_blue)
         painter.drawRoundedRect(0, 0, size.width() - 2, size.height() - 2,
                                 10, 10)
         painter.drawImage(5, 5, self.image)
     else:
         painter.drawImage(event.rect(), self.image)
示例#42
0
文件: iwidget.py 项目: yuanjq/idoui
    def paintEvent(self, event):
        painter = QPainter(self)
        w = self.width()
        h = self.height()

        rect = QRect(self.shadowMargin, self.shadowMargin, 
                     w - 2 * self.shadowMargin, h - 2 * self.shadowMargin)
        painter.setPen(Qt.NoPen)
        painter.setBrush(self.palette().window())
        painter.drawRoundedRect(rect, self.borderRadius, self.borderRadius)
        self._drawGradientShadow(painter, w, h)
示例#43
0
 def paintEvent(self, event):
     color = self.state_colors[self.state]
     painter = QPainter(self)
     painter.setRenderHint(QPainter.Antialiasing, True)
     painter.setCompositionMode(QPainter.CompositionMode_SourceOver)
     gradient = QLinearGradient(0, 0, self.width(), 0)
     gradient.setColorAt(0.0, Qt.transparent)
     gradient.setColorAt(1.0, color)
     painter.setBrush(QBrush(gradient))
     gradient.setColorAt(1.0, color.stroke)
     painter.setPen(QPen(QBrush(gradient), 1))
     painter.drawRoundedRect(-4, 0, self.width()+4, self.height(), 3.7, 3.7)
示例#44
0
 def paintEvent(self, ev):
     color = self._color
     if not color or color.alpha() == 0:
         return
     painter = QPainter(self)
     adj = self.lineWidth // 2
     rect = self.rect().adjusted(adj, adj, -adj, -adj)
     pen = QPen(color)
     pen.setWidth(self.lineWidth)
     painter.setPen(pen)
     painter.setRenderHint(QPainter.Antialiasing, True)
     painter.drawRoundedRect(rect, self.radius, self.radius)
示例#45
0
 def _dialog_paintEvent(self, d, event):
     QDialog.paintEvent(d, event)
     pen = QPen()
     pen.setWidth(2)
     pen.setColor(QColor(200, 200, 200))
     rect = d.rect()
     rect = rect.adjusted(0, 0, -1, -1)
     painter = QPainter(d)
     painter.setRenderHint(QPainter.Antialiasing, True)
     painter.setPen(pen)
     painter.setOpacity(0.8)
     painter.setBrush(QBrush(QColor(Qt.white)))
     painter.drawRoundedRect(rect, 15, 15)
示例#46
0
def _rounded_qimage(qimg, radius):
	r_image = QImage(qimg.width(), qimg.height(), QImage.Format_ARGB32)
	r_image.fill(Qt.transparent)
	p = QPainter()
	pen = QPen(Qt.darkGray)
	pen.setJoinStyle(Qt.RoundJoin)
	p.begin(r_image)
	p.setRenderHint(p.Antialiasing)
	p.setPen(Qt.NoPen)
	p.setBrush(QBrush(qimg))
	p.drawRoundedRect(0, 0, r_image.width(), r_image.height(), radius, radius)
	p.end()
	return r_image
示例#47
0
 def image(cls, **kwargs):
     """
     Returns an image suitable for the palette.
     :rtype: QPixmap
     """
     # INITIALIZATION
     pixmap = QPixmap(kwargs['w'], kwargs['h'])
     pixmap.fill(Qt.transparent)
     painter = QPainter(pixmap)
     # ITEM SHAPE
     rect = cls.createPolygon(50, 30)
     painter.setRenderHint(QPainter.Antialiasing)
     painter.setPen(QPen(QColor(0, 0, 0), 1.0, Qt.SolidLine, Qt.SquareCap, Qt.RoundJoin))
     painter.setBrush(QColor(252, 252, 252))
     painter.translate(kwargs['w'] / 2, kwargs['h'] / 2)
     painter.drawRoundedRect(rect, 14, 14)
     return pixmap
示例#48
0
 def paintEvent(self, event):
     QWidget.paintEvent(self, event)
     pen = QPen()
     pen.setWidth(2)
     pen.setColor(QColor(200, 200, 200))
     rect = self.rect()
     rect = rect.adjusted(0, 0, -1, -1)
     painter = QPainter(self)
     painter.setRenderHint(QPainter.Antialiasing, True)
     painter.setPen(pen)
     painter.setOpacity(0.5)
     painter.setBrush(QBrush(QColor(Qt.white)))
     painter.drawRoundedRect(rect, 15, 15)
     painter.setOpacity(1)
     pen.setColor(Qt.black)
     painter.setPen(pen)
     text = self.name + "\n" + self.description
     painter.drawText(self.rect(), Qt.AlignHCenter | Qt.AlignVCenter, text)
示例#49
0
 def image(cls, **kwargs):
     """
     Returns an image suitable for the palette.
     :rtype: QPixmap
     """
     # INITIALIZATION
     pixmap = QPixmap(kwargs['w'], kwargs['h'])
     pixmap.fill(Qt.transparent)
     painter = QPainter(pixmap)
     rect = cls.createPolygon(54, 34)
     # ITEM SHAPE
     painter.setRenderHint(QPainter.Antialiasing)
     painter.setPen(QPen(QColor(0, 0, 0), 1.0, Qt.SolidLine, Qt.SquareCap, Qt.RoundJoin))
     painter.setBrush(QColor(252, 252, 252))
     painter.translate(kwargs['w'] / 2, kwargs['h'] / 2)
     painter.drawRoundedRect(rect, 6, 6)
     # TEXT WITHIN THE SHAPE
     painter.setFont(Font('Arial', 10, Font.Light))
     painter.drawText(rect, Qt.AlignCenter, 'xsd:string')
     return pixmap
示例#50
0
 def paintEvent(self, event):
     """Paint transparent background,animated pattern,background text."""
     painter, font = QPainter(self), self.font()
     painter.fillRect(event.rect(), Qt.transparent)  # fill transparent rect
     painter.setPen(QPen(QColor(randint(9, 255), randint(9, 255), 255)))
     painter.rotate(30)  # Rotate painter ~30 Degree
     font.setBold(True)  # Set painter Font for text
     font.setPixelSize(100)
     painter.setFont(font)
     painter.drawText(99, 99, "Python Qt")  # draw the background text
     painter.rotate(-30)  # Rotate -30 the QPen back
     painter.setPen(Qt.NoPen)  # set the pen to no pen
     painter.setBrush(QColor("black"))  # Background Color
     painter.setOpacity(0.9)  # Background Opacity
     painter.drawRoundedRect(self.rect(), 25, 25)  # Back Rounded Borders
     for i in range(2048):  # animated random dots background pattern
         x = randint(10, self.size().width() - 10)
         y = randint(10, self.size().height() - 10)
         painter.setPen(QPen(QColor(randint(9, 255), randint(9, 255), 255)))
         painter.drawPoint(x, y)
     QMainWindow.paintEvent(self, event)
示例#51
0
def generateTheme(themeDatas, screenRect):
    # Window Background
    px = QPixmap(screenRect.size())
    px.fill(QColor(themeDatas["Background/Color"]))

    painter = QPainter(px)
    if themeDatas["Background/ImageFile"]:
        path = findBackground(themeDatas["Background/ImageFile"])
        _type = themeDatas["Background/Type"]
        if path and _type > 0:
            if _type == 1:  # Tiled
                painter.fillRect(screenRect, QBrush(QImage(path)))
            else:
                img = QImage(path)
                scaled = img.size()
                if _type == 3:  # Stretched
                    scaled.scale(screenRect.size(), Qt.IgnoreAspectRatio)
                elif _type == 4:  # Scaled
                    scaled.scale(screenRect.size(), Qt.KeepAspectRatio)
                elif _type == 5:  # Zoomed
                    scaled.scale(screenRect.size(), Qt.KeepAspectRatioByExpanding)

                painter.drawImage((screenRect.width() - scaled.width()) / 2,
                                  (screenRect.height() - scaled.height()) / 2, img.scaled(scaled))

    # Text Background
    textRect = themeTextRect(themeDatas, screenRect)

    painter.save()
    color = QColor(themeDatas["Foreground/Color"])
    color.setAlpha(themeDatas["Foreground/Opacity"] * 255 / 100)
    painter.setBrush(color)
    painter.setPen(Qt.NoPen)
    r = themeDatas["Foreground/Rounding"]
    painter.drawRoundedRect(textRect, r, r)
    painter.restore()

    painter.end()
    return px
示例#52
0
    def paintEvent(self, event):
        painter = QPainter(self)

        if self.fUseCustomPaint:
            painter.setBrush(self.fViewBg)
            painter.setPen(QColor(12, 12, 12))
            painter.drawRect(0, 0, self.width(), self.height()-2)

            painter.setBrush(QColor(36, 36, 36))
            painter.setPen(QColor(62, 62, 62))
            painter.drawRect(1, 1, self.width()-2, self.height()-4)

            painter.setBrush(self.fViewBg)
            painter.setPen(self.fViewBg)
            painter.drawRect(2, 3, self.width()-5, self.height()-7)

        else:
            painter.setBrush(self.fViewBg)
            painter.setPen(self.fViewBg)
            painter.drawRoundedRect(2, 2, self.width()-6, self.height()-6, 3, 3)

        self.fScene.render(painter, self.fRenderSource, self.fRenderTarget, Qt.KeepAspectRatio)

        maxWidth  = self.fViewRect[iWidth]  / self.fScale
        maxHeight = self.fViewRect[iHeight] / self.fScale

        if maxWidth > self.fFakeWidth:
            maxWidth = self.fFakeWidth
        if maxHeight > self.fFakeHeight:
            maxHeight = self.fFakeHeight

        painter.setBrush(self.fViewBrush)
        painter.setPen(self.fViewPen)
        painter.drawRect(self.fViewRect[iX], self.fViewRect[iY], maxWidth, maxHeight)

        if self.fUseCustomPaint:
            event.accept()
        else:
            QFrame.paintEvent(self, event)
示例#53
0
class RoundedPushButton(QPushButton):
    def __init__(self,parent, text=''):
        QPushButton.__init__(self, parent)
        self.text=text
        self.backgroundColor = QPalette().light().color()
        self.backgroundColor.setRgb(157,157,157) #(220,203,231)
        #self.backgroundColor.setAlpha(0)
        self.brush=QBrush(Qt.SolidPattern)

    def paintEvent(self,event):
        self.brush.setColor(self.backgroundColor)
        self.painter=QPainter(self)
        self.painter.setRenderHint(QPainter.Antialiasing)
        
        self.painter.setPen(Qt.NoPen)
        self.painter.setBrush(self.brush)
        self.painter.drawRoundedRect(QRect(0,0,self.width(),self.height()), self.width()/10, self.height()/10)
        self.painter.end()

        self.painter3=QPainter(self)
        self.painter3.drawText(1,0,self.width()-2,self.height(),Qt.AlignCenter,self.text)
        self.painter3.end()
    def paintInfoColumn(self, painter, option, index, width_limit = 0):
        left = option.rect.left() + 3
        top = option.rect.top()
        width = option.rect.width() - width_limit

        pixmap = QPixmap(option.rect.size())
        pixmap.fill(Qt.transparent)

        p = QPainter(pixmap)
        p.setRenderHint(QPainter.Antialiasing, True)
        p.translate(-option.rect.topLeft())

        textInner = 2 * ICON_PADDING + ROW_HEIGHT - 10
        itemHeight = ROW_HEIGHT + 2 * ICON_PADDING

        margin = left + ICON_PADDING - 10

        title = QVariant.value(index.model().data(index, NameRole))
        summary = QVariant.value(index.model().data(index, SummaryRole))
        ptype = QVariant.value(index.model().data(index, TypeRole))
        
        rate = int(QVariant.value(index.model().data(index, RateRole))) if QVariant.value(index.model().data(index, RateRole))!= None  else 0
        
        installed = True if QVariant.value(index.model().data(index, InstalledRole))=="True" else False
        
        # We need to request update if its not possible to get meta data about the package
        try:
            # Get Package Icon if exists
            _icon = QVariant.value(index.model().data(index, Qt.DecorationRole))
        except:
            p.end()
            painter.drawPixmap(option.rect.topLeft(), pixmap)
            self.parent.requestUpdate()
            return

        icon = None

        if _icon:
            overlay = [CHECK_ICON] if installed else []
            KIconLoader._forceCache = True
            pix = KIconLoader.loadOverlayed(_icon, overlay, 32)
            if not pix.isNull():
                icon = QIcon(pix.scaled(QSize(32, 32), Qt.KeepAspectRatio, Qt.SmoothTransformation))
            KIconLoader._forceCache = False
               

        if not icon:
            icon = self.defaultIcon if not installed else self.defaultInstalledIcon

        # Paint the Icon
        icon.paint(p, margin, top + ICON_PADDING, ROW_HEIGHT, ROW_HEIGHT, Qt.AlignCenter)

        fix_pos = 0
        if index.model().columnCount() <= 1:
            fix_pos = 22

        if config.USE_APPINFO:
            # Rating Stars
            for _rt_i in range(5):
                self._rt_0.paint(p, width + 10 * _rt_i - 30 - fix_pos, top + ROW_HEIGHT / 4, 10, 10, Qt.AlignCenter)
            for _rt_i in range(rate):
                self._rt_1.paint(p, width + 10 * _rt_i - 30 - fix_pos, top + ROW_HEIGHT / 4, 10, 10, Qt.AlignCenter)
        
        foregroundColor = option.palette.color(QPalette.Text)
        p.setPen(foregroundColor)

        # Package Name
        p.setFont(self.boldFont)
        p.drawText(left + textInner, top, width - textInner, itemHeight / 2,Qt.AlignBottom | Qt.AlignLeft, title) # 
                
        tagWidth = 0

        _component_width = 0
        if self.parent.showComponents:
            component = str(QVariant.value(index.model().data(index, ComponentRole)))
            widthOfTitle = self.boldFontFM.width(title) + 6 + left + textInner

            p.setFont(self.tagFont)
            rect = self.tagFontFM.boundingRect(option.rect, Qt.TextWordWrap, component)
            p.setPen(LIGHTGREEN)
            p.setBrush(LIGHTGREEN)
            p.drawRoundedRect(widthOfTitle , top + 12, rect.width() + 4, rect.height(), 10, 10)
            p.setPen(DARKGREEN)
            p.drawText(widthOfTitle + 2, top + 12, rect.width(), rect.height(), Qt.AlignCenter, component)
            p.setPen(foregroundColor)
            _component_width = rect.width() + 8

        if self.parent.showIsA:
            isa = str(QVariant.value(index.model().data(index, IsaRole)))
            if not isa == '':
                widthOfTitle = self.boldFontFM.width(title) + 6 + left + textInner + _component_width

                p.setFont(self.tagFont)
                rect = self.tagFontFM.boundingRect(option.rect, Qt.TextWordWrap, isa)
                p.setPen(LIGHTBLUE)
                p.setBrush(LIGHTBLUE)
                p.drawRoundedRect(widthOfTitle , top + 12, rect.width() + 4, rect.height(), 10, 10)
                p.setPen(DARKVIOLET)
                p.drawText(widthOfTitle + 2, top + 12, rect.width(), rect.height(), Qt.AlignCenter, isa)
                p.setPen(foregroundColor)
                _component_width += rect.width() + 8

        if ptype not in ('None', 'normal'):
            widthOfTitle = self.boldFontFM.width(title) + 6 + left + textInner + _component_width
            p.setFont(self.tagFont)
            rect = self.tagFontFM.boundingRect(option.rect, Qt.TextWordWrap, self.types[ptype][1])
            p.setPen(self.types[ptype][0])
            p.setBrush(self.types[ptype][0])
            p.drawRoundedRect(widthOfTitle, top + 12, rect.width() + 4, rect.height(), 10, 10)
            p.setPen(WHITE)
            p.drawText(widthOfTitle + 2, top + 12, rect.width(), rect.height(), Qt.AlignCenter, self.types[ptype][1])
            p.setPen(foregroundColor)
            tagWidth = rect.width()

        # Package Summary
        p.setFont(self.normalFont)
        foregroundColor.setAlpha(160)
        p.setPen(foregroundColor)
        elided_summary = self.normalFontFM.elidedText(summary, Qt.ElideRight, width - textInner - tagWidth - 22)
        p.drawText(left + textInner, top + itemHeight / 2, width - textInner, itemHeight / 2, Qt.TextDontClip, elided_summary)
        foregroundColor.setAlpha(255)
        p.setPen(foregroundColor)

        buttonStyle = None
        if self.rowAnimator.currentRow() == index.row():
            description = str(QVariant.value(index.model().data(index, DescriptionRole)))
            size = str(QVariant.value(index.model().data(index, SizeRole)))
            homepage = str(QVariant.value(index.model().data(index, HomepageRole)))
            installedVersion = str(QVariant.value(index.model().data(index, InstalledVersionRole)))
            version = str(QVariant.value(index.model().data(index, VersionRole)))

            # Package Detail Label
            position = top + ROW_HEIGHT

            p.setFont(self.normalDetailFont)
            baseRect = QRect(left, position, width - 8, option.rect.height())
            rect = self.normalDetailFontFM.boundingRect(baseRect, Qt.TextWordWrap | Qt.TextDontClip, description)
            p.drawText(left + 2, position, width - 8, rect.height(), Qt.TextWordWrap | Qt.TextDontClip, description)

            # Package Detail Homepage
            position += rect.height() + 4

            p.setFont(self.boldDetailFont)
            p.drawText(left + ICON_SIZE , position, width - textInner, itemHeight / 2, Qt.AlignLeft, self._titles['website'])

            p.setFont(self.normalDetailFont)
            homepage = self.normalDetailFontFM.elidedText(homepage, Qt.ElideRight, width - self._titleFM['website'])
            rect = self.normalDetailFontFM.boundingRect(option.rect, Qt.TextSingleLine, homepage)
            self.rowAnimator.hoverLinkFilter.link_rect = QRect(left + self._titleFM['website'] + 2, position + 2 + 32, rect.width(), rect.height())

            p.setPen(option.palette.color(QPalette.Link))
            p.drawText(left + self._titleFM['website'], position, width, rect.height(), Qt.TextSingleLine, homepage)
            p.setPen(foregroundColor)

            # Package Detail Version
            position += rect.height()

            p.setFont(self.boldDetailFont)
            p.drawText(left + ICON_SIZE , position, width - textInner, itemHeight / 2, Qt.AlignLeft, self._titles['release'])

            p.setFont(self.normalDetailFont)
            rect = self.normalDetailFontFM.boundingRect(option.rect, Qt.TextWordWrap, version)
            p.drawText(left + self._titleFM['release'], position, width, rect.height(), Qt.TextWordWrap, version)

            if not installedVersion == '' or not installedVersion == None:
                position += rect.height()

                p.setFont(self.boldDetailFont)
                p.drawText(left + ICON_SIZE , position, width - textInner, itemHeight / 2, Qt.AlignLeft, self._titles['installVers'])

                p.setFont(self.normalDetailFont)
                rect = self.normalDetailFontFM.boundingRect(option.rect, Qt.TextWordWrap, installedVersion)
                p.drawText(left + self._titleFM['installVers'], position, width, rect.height(), Qt.TextWordWrap, installedVersion)

            # Package Detail Repository
            repository = QVariant.value(index.model().data(index, RepositoryRole))
            if not repository == '':
                repository = _translate("Packaga Manager",'Unknown')  if repository == 'N/A' else repository
                position += rect.height()

                p.setFont(self.boldDetailFont)
                p.drawText(left + ICON_SIZE , position, width - textInner, itemHeight / 2, Qt.AlignLeft, self._titles['repository'])

                p.setFont(self.normalDetailFont)
                p.drawText(left + self._titleFM['repository'], position, width, itemHeight / 2, Qt.TextWordWrap, repository)

            # Package Detail Size
            position += rect.height()

            p.setFont(self.boldDetailFont)
            p.drawText(left + ICON_SIZE , position, width - textInner, itemHeight / 2, Qt.AlignLeft, self._titles['size'])

            p.setFont(self.normalDetailFont)
            p.drawText(left + self._titleFM['size'], position, width, itemHeight / 2, Qt.TextWordWrap, size)
            position += rect.height()
            self.rowAnimator.max_height = position - top + 8

            # Package More info button
            opt = QStyleOptionViewItem(option)

            buttonStyle = QStyleOptionButton()
            if option.state & QStyle.State_MouseOver or option.state & QStyle.State_HasFocus:
                buttonStyle.state |= QStyle.State_HasFocus
            
            buttonStyle.state |= QStyle.State_Enabled
            buttonStyle.text = _translate("Packaga Manager","Details")

            buttonStyle.rect = QRect(width - 100, position - 22, 100, 22)

        p.end()

        # FIXME
        # if option.state & QStyle.State_HasFocus and self.animatable:
        #     option.state |= QStyle.State_MouseOver
            # Use Plastique style to draw focus rect like MouseOver effect of Oxygen.
            # self.plastik.drawPrimitive(QStyle.PE_FrameLineEdit, option, painter, None)

        if not self.rowAnimator.running() and buttonStyle:
            if self.show_details_button and (installed or config.USE_APPINFO):
                PackageDelegate.AppStyle().drawControl(QStyle.CE_PushButton, buttonStyle, painter, None)
                self.rowAnimator.hoverLinkFilter.button_rect = QRect(buttonStyle.rect)

        painter.drawPixmap(option.rect.topLeft(), pixmap)
        del pixmap
示例#55
0
    def paintEvent(self, event):
        painter=QPainter(self)
        #设置渲染:开启抗锯齿,老机器很占cpu!
        painter.setRenderHint(QPainter.Antialiasing)

        #第一次使用,就使用一次,用来检测打开播放器时,读取上次关闭时的记录 ==>
        if self.homeAction.playObj.bufferStatus()==100 and self.homeAction.isInitPlay:#判断载入歌曲是否100% ,并且是第一打开播放器
            self.homeAction.isInitPlay=0
            self.homeAction.playObj.setPosition(self.homeAction.pastTime)
            if self.homeAction.playStat=="False":
                self.homeAction.playObj.pause()
        #第一次使用,用来检测打开播放器时,读取上次关闭时的记录<<==

    #当前歌曲信息及播放完毕后的事件==>>
        #当前歌曲(总长)
        totalDuration = int(self.homeAction.playObj.duration())
        #当前歌曲(已播放时间)
        pastTime = int(self.homeAction.playObj.position())
        #当前歌曲(剩余时长)
        laveTime = totalDuration - pastTime
        # if pastTime>=totalDuration:
        if self.homeAction.playObj.mediaStatus()==7:
            #print("zhe::::")
            if self.homeAction.isLoop==1:#是否单循环
                self.homeAction.playObj.setPosition(0)
                self.homeAction.playObj.play()
            else:
                self.homeAction.nextPlay()
            self.tracksList.setCurrentRow(self.homeAction.soundID)
    #当前歌曲信息及播放完毕后的事件结束<<==

    #记录播放信息==>>
        colors.CONFIGFILE.set("Save","soundID",str(self.homeAction.soundID))
        if self.homeAction.playObj.state()==1:
            playStat="True"
        else:
            playStat="False"
        colors.CONFIGFILE.set("Save","playStat",playStat)
        colors.CONFIGFILE.set("Save","pastTime",str(pastTime))
        colors.CONFIGFILE.set("Save","volume",str(self.homeAction.currentVolume))
        colors.CONFIGFILE.set("Save","isRandom",str(self.homeAction.isRandom))
        colors.CONFIGFILE.set("Save","isLoop",str(self.homeAction.isLoop))
        colors.CONFIGFILE.write(open('config.ini', "w"))
    #记录播放信息结束<<==

    #播放轨道条==>>
        painter.setPen(QPen(Qt.NoPen))#设置样式
        painter.setBrush(QColor(230,230,219,120))#设置颜色
        #画播放轨道背景
        painter.drawRoundedRect(QRectF(40,257,450,42),5.0, 5.0)
        #画播放轨道(未播放状态)
        painter.setPen(QPen(Qt.white,0.1))
        painter.setBrush(Qt.NoBrush)
        painter.drawRect(QRectF(50,272,410,10))
        #画播放轨道(计算并画已播放状态)
        painter.setPen(QPen(Qt.NoPen))
        painter.setBrush(QColor(0,173,239,255))
        self.section = 408*10 / (totalDuration*10)
        past = pastTime* self.section
        currentPosition = past
        if currentPosition > 408:
            currentPosition=408
        #画出已播放状态)
        painter.drawRect(QRectF(51,273,currentPosition,8))
    #播放轨道条结束<<===

    #播放轨道条右侧的播放/暂停的小图标,小三角或两竖<<===
        if self.homeAction.playObj.state()==1:
            #画播放状态标(三角形)
            points = [QPointF(476.0, 277.0),QPointF(468.0, 273.0),QPointF(468.0, 281.0)]
            painter.drawPolygon(QPolygonF(points))#三角形
        else:
            #画暂停状态标(两竖)
            painter.drawRect(QRectF(468,273,3,8))#暂停第一竖
            painter.drawRect(QRectF(473,273,3,8))#暂停第二竖
    #播放轨道条右侧的播放/暂停的小图标,小三角或两竖结束<<===

    #画轨道条上面的照片背景==>
        painter.setBrush(Qt.white)
        painter.setPen(QPen(QColor(176,178,177,255),1))
        painter.drawRect(QRect(270,105,160,160))
        painter.drawImage(QRectF(275,110,150,150), QImage("%simg/music/nonePhoto.png" % (colors.SYSPATH)), QRectF(0.0, 0.0, 150.0, 150.0))#测试照片
        if self.homeAction.currentImg!="":
            photos = QImage()
            photos.loadFromData(self.homeAction.currentImg, "JPG")
            newImg = photos.scaled(150,150)
            painter.drawImage(QRectF(275,110,150,150),newImg, QRectF(0.0, 0.0, 150.0, 150.0))#测试照片


    #画轨道条上面的照片背景END<<==

    #添加艺术家图标和歌曲标题图标==>
        painter.drawImage(QRectF(40,150,20,20), QImage("%simg/music/icon.png" % (colors.SYSPATH)), QRectF(0.0, 0.0, 20.0, 20.0))#艺术家
        painter.drawImage(QRectF(40,175,20,20), QImage("%simg/music/icon.png" % (colors.SYSPATH)), QRectF(0.0, 20.0, 20.0, 20.0))#歌曲标题一
        painter.drawImage(QRectF(40,200,20,20), QImage("%simg/music/icon.png" % (colors.SYSPATH)), QRectF(0.0, 40.0, 20.0, 20.0))#歌曲标题二
        painter.drawImage(QRectF(40,225,20,20), QImage("%simg/music/icon.png" % (colors.SYSPATH)), QRectF(0.0, 60.0, 20.0, 20.0))#时间进度
    #添加艺术家图标和歌曲标题图标END<<==

    #当前播放歌曲的信息==>>
        #<--剩余时间
        painter.setFont(QFont("Verdana",8))
        painter.setPen(QColor(0,173,239,255))
        painter.drawText(QPointF(425,281),str(time.strftime("%M:%S", time.localtime(laveTime/1000))))#剩余时间
        #剩余时间-->
        painter.setFont(QFont("Verdana",12))
        painter.drawText(QPointF(70,243),str(time.strftime("%M:%S", time.localtime(totalDuration/1000))) + " /")#总时长
        painter.drawText(QPointF(135,243),str(time.strftime("%M:%S", time.localtime(pastTime/1000))))#已播放时间
        painter.drawText(QPointF(110,217),"%d/%d" %(self.homeAction.soundID,len(self.homeAction.randomList)-1))#曲目  x/x

        painter.setFont(QFont("微软雅黑",12))
        painter.drawText(QPointF(70,166),self.homeAction.playObj.metaData(QMediaMetaData.Author))#艺术家
        painter.drawText(QPointF(70,190),self.homeAction.playObj.metaData(QMediaMetaData.Title))#曲目名
        painter.drawText(QPointF(70,216),"曲目")#曲目
    #当前播放歌曲的信息END<<==

    #画试听、随机、循环按钮背景==>>
        painter.setPen(Qt.NoPen)
        painter.setBrush(QColor(70,72,76,220))
        painter.drawRect(QRect(531,1,75,39))#循环
        painter.drawRect(QRect(607,1,75,39))#随机
        painter.drawRect(QRect(683,1,74,39))#预览

        painter.drawRect(QRect(531,334,75,39))#清空列表
        painter.drawRect(QRect(607,334,75,39))#增加文件夹
        painter.drawRect(QRect(683,334,74,39))#增加文件
    #画试听、随机、循环按钮背景END<<==

    #按扭文字 循环  随机 预览 清空列表 增加文件夹 增加文件  ==>>
        painter.setPen(Qt.white)
        painter.setFont(QFont("微软雅黑",10))
        painter.drawText(QPointF(715,25),"循环")#循环
        painter.drawText(QPointF(640,25),"随机")#随机
        painter.drawText(QPointF(565,25),"预览")#预览

        painter.drawText(QPointF(715,358),"打开")#循环
        painter.drawText(QPointF(640,358),"添加")#随机
        painter.drawText(QPointF(565,358),"清空")#随机
    #按扭文字 循环  随机 预览 清空列表 增加文件夹 增加文件  END<<==

    #歌词==>
        painter.setFont(QFont("微软雅黑",20))
        #print(self.homeAction.songText)
        for key,v in enumerate(self.homeAction.songTextKey):
            if int(v) > int(pastTime/1000):
                strKey = self.homeAction.songTextKey[key-1]
                painter.drawText(QPointF(40,340),self.homeAction.songText[str(strKey)])#当前歌词
                break
    #歌词<<==

    #画右侧列表背景 ==>
        painter.setPen(QPen(Qt.NoPen))
        painter.setBrush(QColor(230,230,219,120))
        painter.drawRect(QRect(531,41,226,292))
    #画右侧列表背景END<<==

    #画右侧列表滚动条背景 ==>>
        painter.setBrush(QColor(71,73,76,255))
        painter.drawRect(QRect(758,1,42,372))
        painter.setBrush(QColor(43,46,49,255))
        painter.drawRoundedRect(QRectF(770,1,18,372),20.0, 20.0)
    #画右侧列表滚动条背景 END<<==

    #列表向上  向下 按钮 ==>>
        painter.drawImage(QRectF(770,1,18,27), QImage("%simg/music/up.png" % (colors.SYSPATH)), QRectF(0.0, 0.0, 18.0, 27.0))#列表向上
        painter.drawImage(QRectF(770,345,18,27), QImage("%simg/music/down.png" % (colors.SYSPATH)), QRectF(0.0, 0.0, 18.0, 27.0))#列表向下
    #列表向上  向下 按钮 END<<==

    #滚动条位置(顶端:24,底端:298,可移动范围:300)===>>
        try:
            if self.tracksList.count()>5:
                #pp = 274*1000/self.tracksList.count()
                pp = 300*1000/self.tracksList.count()
                oo = int(self.tracksList.verticalScrollBar().value()*pp/1000)+24
                if oo>298:
                    oo=298
                painter.drawImage(QRectF(770,oo,18,53), QImage("%simg/music/scroll.png" % (colors.SYSPATH)), QRectF(0.0, 0.0, 18.0, 53.0))
        except :
            pass
    #滚动条位置(顶端:24,底端:298,可移动范围:274)END<<===


    #画按钮的图标 循环  随机 预览 清空列表 增加文件夹 增加文件  ==>>
        #画试听图标
        if self.homeAction.isPreview:
            if pastTime >10*1000:
                self.homeAction.nextPlay()
            if int(pastTime)%2 == 0:
                #print("偶数",int(pastTime)%2)
                painter.setPen(Qt.red)
                painter.setFont(QFont("微软雅黑",10))
                painter.drawText(QPointF(565,25),"预览")#随机
                painter.drawImage(QRectF(540,9.5,20,20), QImage("%simg/music/icon.png" % (colors.SYSPATH)), QRectF(40.0, 40.0, 20.0, 20.0))#画预览图标
            else:
                painter.drawImage(QRectF(540,9.5,20,20), QImage("%simg/music/icon.png" % (colors.SYSPATH)), QRectF(20.0, 40.0, 20.0, 20.0))#画预览图标
        else:
            painter.drawImage(QRectF(540,9.5,20,20), QImage("%simg/music/icon.png" % (colors.SYSPATH)), QRectF(20.0, 40.0, 20.0, 20.0))#画预览图标

        #画随机图标
        if self.homeAction.isRandom == 1:
            painter.drawImage(QRectF(615,9.5,20,20), QImage("%simg/music/icon.png" % (colors.SYSPATH)), QRectF(40.0, 20.0, 20.0, 20.0))#画随机图标
        else:
            painter.drawImage(QRectF(615,9.5,20,20), QImage("%simg/music/icon.png" % (colors.SYSPATH)), QRectF(20.0, 20.0, 20.0, 20.0))#画随机图标

        #画循环图标
        if self.homeAction.isLoop  == 1:
            painter.drawImage(QRectF(690,9.5,20,20), QImage("%simg/music/icon.png" % (colors.SYSPATH)), QRectF(40.0, 00.0, 20.0, 20.0))#画循环图标
        else:
            painter.drawImage(QRectF(690,9.5,20,20), QImage("%simg/music/icon.png" % (colors.SYSPATH)), QRectF(20.0, 00.0, 20.0, 20.0))#画循环图标

        #清空列表图标
        painter.drawImage(QRectF(540,342,20,20), QImage("%smusic/icon.png" % (colors.SYSPATH)), QRectF(60.0, 00.0, 20.0, 20.0))#清空列表图标
        painter.drawImage(QRectF(615,344,20,20), QImage("%smusic/icon.png" % (colors.SYSPATH)), QRectF(60.0, 20.0, 20.0, 20.0))#增加文件
        painter.drawImage(QRectF(690,342.5,20,20), QImage("%smusic/icon.png" % (colors.SYSPATH)), QRectF(60.0, 40.0, 20.0, 20.0))#增加文件夹
示例#56
0
    def paintEvent(self, event):
        page_bottom = self.edit.viewport().height()
        font_metrics = QFontMetrics(self.edit.document().defaultFont())
        current_block = self.edit.document().findBlock(
            self.edit.textCursor().position())
        pattern = self.pat if self.edit.lang == "python" else self.patNotPython

        painter = QPainter(self)
        background = resources.CUSTOM_SCHEME.get('sidebar-background',
            resources.COLOR_SCHEME['sidebar-background'])
        foreground = resources.CUSTOM_SCHEME.get('sidebar-foreground',
            resources.COLOR_SCHEME['sidebar-foreground'])
        pep8color = resources.CUSTOM_SCHEME.get('pep8-underline',
            resources.COLOR_SCHEME['pep8-underline'])
        errorcolor = resources.CUSTOM_SCHEME.get('error-underline',
            resources.COLOR_SCHEME['error-underline'])
        migrationcolor = resources.CUSTOM_SCHEME.get('migration-underline',
            resources.COLOR_SCHEME['migration-underline'])
        painter.fillRect(self.rect(), QColor(background))

        block = self.edit.firstVisibleBlock()
        viewport_offset = self.edit.contentOffset()
        line_count = block.blockNumber()
        painter.setFont(self.edit.document().defaultFont())
        while block.isValid():
            line_count += 1
            # The top left position of the block in the document
            position = self.edit.blockBoundingGeometry(block).topLeft() + \
                viewport_offset
            # Check if the position of the block is outside of the visible area
            if position.y() > page_bottom:
                break

            # Set the Painter Pen depending on special lines
            error = False
            if settings.CHECK_STYLE and \
               ((line_count - 1) in self._pep8Lines):
                painter.setPen(QColor(pep8color))
                font = painter.font()
                font.setItalic(True)
                font.setUnderline(True)
                painter.setFont(font)
                error = True
            elif settings.FIND_ERRORS and \
                 ((line_count - 1) in self._errorsLines):
                painter.setPen(QColor(errorcolor))
                font = painter.font()
                font.setItalic(True)
                font.setUnderline(True)
                painter.setFont(font)
                error = True
            elif settings.SHOW_MIGRATION_TIPS and \
                 ((line_count - 1) in self._migrationLines):
                painter.setPen(QColor(migrationcolor))
                font = painter.font()
                font.setItalic(True)
                font.setUnderline(True)
                painter.setFont(font)
                error = True
            else:
                painter.setPen(QColor(foreground))

            # We want the line number for the selected line to be bold.
            bold = False
            if block == current_block:
                bold = True
                font = painter.font()
                font.setBold(True)
                painter.setFont(font)

            # Draw the line number right justified at the y position of the
            # line. 3 is a magic padding number. drawText(x, y, text).
            if block.isVisible():
                painter.drawText(self.width() - self.foldArea -
                    font_metrics.width(str(line_count)) - 3,
                    round(position.y()) + font_metrics.ascent() +
                    font_metrics.descent() - 1,
                    str(line_count))

            # Remove the bold style if it was set previously.
            if bold:
                font = painter.font()
                font.setBold(False)
                painter.setFont(font)
            if error:
                font = painter.font()
                font.setItalic(False)
                font.setUnderline(False)
                painter.setFont(font)

            block = block.next()

        self.highest_line = line_count

        #Code Folding
        xofs = self.width() - self.foldArea
        painter.fillRect(xofs, 0, self.foldArea, self.height(),
                QColor(resources.CUSTOM_SCHEME.get('fold-area',
                resources.COLOR_SCHEME['fold-area'])))
        if self.foldArea != self.rightArrowIcon.width():
            polygon = QPolygonF()

            self.rightArrowIcon = QPixmap(self.foldArea, self.foldArea)
            self.rightArrowIcon.fill(Qt.transparent)
            self.downArrowIcon = QPixmap(self.foldArea, self.foldArea)
            self.downArrowIcon.fill(Qt.transparent)

            polygon.append(QPointF(self.foldArea * 0.4, self.foldArea * 0.25))
            polygon.append(QPointF(self.foldArea * 0.4, self.foldArea * 0.75))
            polygon.append(QPointF(self.foldArea * 0.8, self.foldArea * 0.5))
            iconPainter = QPainter(self.rightArrowIcon)
            iconPainter.setRenderHint(QPainter.Antialiasing)
            iconPainter.setPen(Qt.NoPen)
            iconPainter.setBrush(QColor(
                resources.CUSTOM_SCHEME.get('fold-arrow',
                resources.COLOR_SCHEME['fold-arrow'])))
            iconPainter.drawPolygon(polygon)

            polygon.clear()
            polygon.append(QPointF(self.foldArea * 0.25, self.foldArea * 0.4))
            polygon.append(QPointF(self.foldArea * 0.75, self.foldArea * 0.4))
            polygon.append(QPointF(self.foldArea * 0.5, self.foldArea * 0.8))
            iconPainter = QPainter(self.downArrowIcon)
            iconPainter.setRenderHint(QPainter.Antialiasing)
            iconPainter.setPen(Qt.NoPen)
            iconPainter.setBrush(QColor(
                resources.CUSTOM_SCHEME.get('fold-arrow',
                resources.COLOR_SCHEME['fold-arrow'])))
            iconPainter.drawPolygon(polygon)

        block = self.edit.firstVisibleBlock()
        while block.isValid():
            position = self.edit.blockBoundingGeometry(
                block).topLeft() + viewport_offset
            #Check if the position of the block is outside of the visible area
            if position.y() > page_bottom:
                break

            if pattern.match(block.text()) and block.isVisible():
                if block.blockNumber() in self._foldedBlocks:
                    painter.drawPixmap(xofs, round(position.y()),
                        self.rightArrowIcon)
                else:
                    painter.drawPixmap(xofs, round(position.y()),
                        self.downArrowIcon)
            #Add Bookmarks and Breakpoint
            elif block.blockNumber() in self._breakpoints:
                linear_gradient = QLinearGradient(
                    xofs, round(position.y()),
                    xofs + self.foldArea, round(position.y()) + self.foldArea)
                linear_gradient.setColorAt(0, QColor(255, 11, 11))
                linear_gradient.setColorAt(1, QColor(147, 9, 9))
                painter.setRenderHints(QPainter.Antialiasing, True)
                painter.setPen(Qt.NoPen)
                painter.setBrush(QBrush(linear_gradient))
                painter.drawEllipse(
                    xofs + 1,
                    round(position.y()) + 6,
                    self.foldArea - 1, self.foldArea - 1)
            elif block.blockNumber() in self._bookmarks:
                linear_gradient = QLinearGradient(
                    xofs, round(position.y()),
                    xofs + self.foldArea, round(position.y()) + self.foldArea)
                linear_gradient.setColorAt(0, QColor(13, 62, 243))
                linear_gradient.setColorAt(1, QColor(5, 27, 106))
                painter.setRenderHints(QPainter.Antialiasing, True)
                painter.setPen(Qt.NoPen)
                painter.setBrush(QBrush(linear_gradient))
                painter.drawRoundedRect(
                    xofs + 1,
                    round(position.y()) + 6,
                    self.foldArea - 2, self.foldArea - 1,
                    3, 3)

            block = block.next()# block = next(block)

        painter.end()
        super(SidebarWidget, self).paintEvent(event)
示例#57
0
    def paintEvent(self, pe):
        p = QPainter(self)
        p.setRenderHint(QPainter.Antialiasing)

        pen = QPen()
        pen.setWidth(1)
        pen.setColor(QColor(0x8c, 0xa3, 0xb0))
        p.setPen(pen)

        p.setBrush(QColor(0xe4, 0xec, 0xf4))

        rx = 6

        space = self.space
        w = self.usable_width
        kw = self.key_w

        def drawRow(row, sx, sy, last_end=False):
            x = sx
            y = sy
            keys = row
            rw = w - sx
            i = 0
            for k in keys:
                rect = QRectF(x, y, kw, kw)

                if i == len(keys) - 1 and last_end:
                    rect.setWidth(rw)

                p.drawRoundedRect(rect, rx, rx)
                p.setPen(Qt.black)

                rect.adjust(5, 1, 0, 0)

                p.setFont(self.lowerFont)
                p.drawText(
                    rect, Qt.AlignLeft | Qt.AlignBottom, self.regular_text(k))

                p.setFont(self.upperFont)
                p.drawText(
                    rect, Qt.AlignLeft | Qt.AlignTop, self.shift_text(k))

                rw = rw - space - kw
                x = x + space + kw
                i = i + 1

                p.setPen(pen)
            return (x, rw)

        x = .5
        y = .5

        keys = self.kb["keys"]
        ext_return = self.kb["extended_return"]

        first_key_w = 0

        rows = 4
        remaining_x = [0, 0, 0, 0]
        remaining_widths = [0, 0, 0, 0]

        for i in range(0, rows):
            if first_key_w > 0:
                first_key_w = first_key_w * 1.375

                if self.kb == self.kb_105 and i == 3:
                    first_key_w = kw * 1.275

                rect = QRectF(x, y, first_key_w, kw)
                p.drawRoundedRect(rect, rx, rx)
                x = x + first_key_w + space
            else:
                first_key_w = kw

            x, rw = drawRow(keys[i], x, y, i == 1 and not ext_return)

            remaining_x[i] = x
            remaining_widths[i] = rw

            if i != 1 and i != 2:
                rect = QRectF(x, y, rw, kw)
                p.drawRoundedRect(rect, rx, rx)

            x = .5
            y = y + space + kw

        if ext_return:
            rx = rx * 2
            x1 = remaining_x[1]
            y1 = .5 + kw * 1 + space * 1
            w1 = remaining_widths[1]
            x2 = remaining_x[2]
            y2 = .5 + kw * 2 + space * 2

            # this is some serious crap... but it has to be so
            # maybe one day keyboards won't look like this...
            # one can only hope
            pp = QPainterPath()
            pp.moveTo(x1, y1 + rx)
            pp.arcTo(x1, y1, rx, rx, 180, -90)
            pp.lineTo(x1 + w1 - rx, y1)
            pp.arcTo(x1 + w1 - rx, y1, rx, rx, 90, -90)
            pp.lineTo(x1 + w1, y2 + kw - rx)
            pp.arcTo(x1 + w1 - rx, y2 + kw - rx, rx, rx, 0, -90)
            pp.lineTo(x2 + rx, y2 + kw)
            pp.arcTo(x2, y2 + kw - rx, rx, rx, -90, -90)
            pp.lineTo(x2, y1 + kw)
            pp.lineTo(x1 + rx, y1 + kw)
            pp.arcTo(x1, y1 + kw - rx, rx, rx, -90, -90)
            pp.closeSubpath()

            p.drawPath(pp)
        else:
            x = remaining_x[2]
            y = .5 + kw * 2 + space * 2
            rect = QRectF(x, y, remaining_widths[2], kw)
            p.drawRoundedRect(rect, rx, rx)

        QWidget.paintEvent(self, pe)