コード例 #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
ファイル: qprogressindicator.py プロジェクト: erkanisik1/pds
    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
ファイル: fridgemagnets.py プロジェクト: eudu/pyqt-examples
    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
ファイル: LrsmProxyStyle.py プロジェクト: sunnyLF/LRSMSingle
    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
ファイル: MFHistoryWidget.py プロジェクト: iamhyc/mind-flash
 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
ファイル: fridgemagnets.py プロジェクト: Magdno1/Arianrhod
    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
ファイル: _CustomWidgets.py プロジェクト: saknayo/sspainter
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
ファイル: CColorSlider.py プロジェクト: ArthurFDLR/CubAnimate
    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
ファイル: basicdrawing.py プロジェクト: Axel-Erfurt/pyqt5
    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
ファイル: toggle_button.py プロジェクト: coordinate/QMCenter
    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
ファイル: waitingspinner.py プロジェクト: jnsebgosselin/WHAT
    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
ファイル: waiting_spinner.py プロジェクト: wyrover/DesktopApp
    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)
コード例 #26
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
ファイル: CAvatar.py プロジェクト: zizle/mkdecision-client
 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
ファイル: main.py プロジェクト: dec1/stackoverflow-egs
    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
ファイル: Qt5UI.py プロジェクト: Gleiphir/Nostear-setto
    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
ファイル: imgutils.py プロジェクト: Grum999/JPEGExport
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
ファイル: textbutton.py プロジェクト: death-finger/Scripts
    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
ファイル: dquickview.py プロジェクト: binwen925/QMusic
 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
ファイル: widgets.py プロジェクト: jfisteus/eyegrade
 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
ファイル: labels.py プロジェクト: AGProjects/blink-qt
 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
ファイル: blink.py プロジェクト: AlexSchr/frescobaldi
 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
ファイル: __init__.py プロジェクト: hgoldfish/quickpanel
 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
ファイル: executors.py プロジェクト: Pewpews/happypanda
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
ファイル: layout_editor.py プロジェクト: hgoldfish/quickpanel
 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
ファイル: value_domain.py プロジェクト: gitter-badger/eddy
 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
ファイル: websktop.py プロジェクト: juancarlospaco/websktop
 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
ファイル: themes.py プロジェクト: georgehank/manuskript
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
ファイル: _CustomWidgets.py プロジェクト: saknayo/sspainter
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()
コード例 #54
0
    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
ファイル: musicWidget.py プロジェクト: peeped/musicPlayer
    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
ファイル: Keyboard.py プロジェクト: linuxmint/ubiquity
    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)