コード例 #1
0
ファイル: file_item_renderer.py プロジェクト: Grumbel/dirtool
    def render(self, painter: QPainter) -> None:
        if self._item_style == FileItemStyle.SMALLICON:
            self.paint_smallicon_view(painter)
        elif self._item_style == FileItemStyle.DETAIL:
            self.paint_detail_view(painter)
        else:
            self.paint(painter)

        if self.is_selected:
            painter.save()
            painter.setCompositionMode(QPainter.CompositionMode_SourceOver)
            painter.setOpacity(0.5)
            painter.fillRect(self.tile_rect, QColor(127, 192, 255))
            painter.setCompositionMode(QPainter.CompositionMode_SourceOver)
            painter.setOpacity(1.0)
            painter.setPen(QColor(96, 127, 255))
            painter.setBrush(Qt.NoBrush)
            painter.drawRect(self.tile_rect)
            painter.restore()

        if self.is_cursor:
            painter.setOpacity(1.0)
            painter.setPen(QColor(0, 0, 0))
            painter.setBrush(QColor(255, 255, 255, 96))
            painter.drawRect(self.tile_rect)
コード例 #2
0
ファイル: fillbar.py プロジェクト: Stummi/python-conky
    def paintEvent(self, event):
        logger.debug("paintEvent: {0} - {1}".format(self, event.rect()))
        qp = QPainter()
        qp.begin(self)
        
        width = self.size().width() - 1 
        height = self.size().height() - 1 

        #draw border
        qp.setPen(self.border_color)
        qp.drawLine(0, 0, width, 0)
        qp.drawLine(0, 0, 0, height)
        qp.drawLine(width, 0, width, height)
        qp.drawLine(0, height, width, height)

        #draw bar
        width  -= 2
        height -= 2
        value = orig_value = self.data_source()
        value = min(self.max_range, value)
        value = max(self.min_range, value)
        qp.setPen(self.bar_color)
        qp.setBrush(self.bar_color)
        if self.orientation == 'horizontal':
            qp.drawRect(1, 1,
                        width / self.max_range * value, height)
        else:
            qp.drawRect(1, height - (height / self.max_range * value), width, height)
        qp.setPen(self.border_color)
        qp.drawText(event.rect(), Qt.AlignCenter, str(orig_value))
        qp.end()
        logger.debug("paintEvent End: {0}".format(self))
コード例 #3
0
ファイル: __init__.py プロジェクト: hgoldfish/quickpanel
 def paintEvent(self, event):
     QWidget.paintEvent(self, event)
     painter = QPainter(self)
     painter.setBrush(QBrush(QColor(Qt.black)))
     painter.setPen(QPen())
     painter.setOpacity(self.value)
     painter.drawRect(self.rect())
コード例 #4
0
ファイル: fontgenerator.py プロジェクト: SolitonNew/tcpy
    def buildCharPreview(self):        
        char = self.selectedChar - self.charFrom.value()
        if char < 0:
            char = 0
        if char >= len(self.charSizes):
            char = len(self.charSizes) - 1
        
        k = 5
        s_x = self.charSizes[char][0]
        w = self.charSizes[char][1]
        
        charPix = self.chars.pixmap()
        charImage = charPix.toImage()

        self.charPreview.resize(w * k + 1, charPix.height() * k + 1)

        pix = QPixmap(w * k, charPix.height() * k)
        p = QPainter()
        p.begin(pix)
        p.setBrush(QBrush(QColor(0xffffff), Qt.SolidPattern))
        p.drawRect(0, 0, pix.width() - 1, pix.height() - 1)

        p.setBrush(QBrush(QColor(0x0), Qt.SolidPattern))        
        for x in range(w):
            for y in range(charPix.height()):
                if QColor(charImage.pixel(s_x + x, y)).lightness() == 0x0:
                    p.drawRect(x * k, y * k, k, k)
        p.end()
        self.charPreview.setPixmap(pix)
コード例 #5
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()
コード例 #6
0
ファイル: MainWindow.py プロジェクト: afester/CodeSamples
    def paintEvent(self, event):
        radius = 50
        
        treeSize = QSizeF(2 * radius, 2 * radius)
        bounds = QRectF( (self.width() - treeSize.height()) / 2,
                         (self.height() - treeSize.width()) / 2,
                         treeSize.width(),
                         treeSize.height())

        painter = QPainter(self)

        # draw the shadow
        painter.setBrush(Qt.black)
        painter.setPen(Qt.NoPen)
        painter.setOpacity(0.5)

        xrad = 95
        yrad = self.shadowLength * 20
        rect = QRectF(-xrad, -yrad, xrad, yrad)
        painter.translate(self.width() / 2, self.height() / 2)
        painter.rotate(self.angle)
        painter.translate(xrad/2, yrad/2)
        painter.drawChord(rect, 0, 180*16)
        painter.resetTransform()

        # draw the tree
        painter.setOpacity(1)
        self.tree.render(painter, bounds)

        # draw the compass
        bounds = QRectF( 10, 10, 50, 50)
        self.compass.render(painter, bounds)
コード例 #7
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))
コード例 #8
0
ファイル: effects.py プロジェクト: mttchpmn07/game_platform
    def setupScene(self):
        self.m_scene.setSceneRect(-300, -200, 600, 460)

        linearGrad = QLinearGradient(QPointF(-100, -100), QPointF(100, 100))
        linearGrad.setColorAt(0, Qt.darkGreen)#QColor(255, 255, 255))
        linearGrad.setColorAt(1, Qt.green)#QQColor(192, 192, 255))
        self.setBackgroundBrush(linearGrad)

        radialGrad = QRadialGradient(30, 30, 30)
        radialGrad.setColorAt(0, Qt.yellow)
        radialGrad.setColorAt(0.2, Qt.yellow)
        radialGrad.setColorAt(1, Qt.transparent)

        pixmap = QPixmap(60, 60)
        pixmap.fill(Qt.transparent)

        painter = QPainter(pixmap)
        painter.setPen(Qt.NoPen)
        painter.setBrush(radialGrad)
        painter.drawEllipse(0, 0, 60, 60)
        painter.end()

        self.m_lightSource = self.m_scene.addPixmap(pixmap)
        self.m_lightSource.setZValue(2)

        self.proto = ProtoObj(0, 0, 50, 50, self)
        self.proto.initObj()

        #self.m_items.append(self.proto.getObj()[0])
        self.m_scene.addItem(self.proto.getObj()[0])
コード例 #9
0
 def __grabRegion(self):
     """
     Private method to grab the selected region (i.e. do the snapshot).
     """
     pol = QPolygon(self.__selection)
     if not pol.isEmpty():
         self.__grabbing = True
         
         xOffset = self.__pixmap.rect().x() - pol.boundingRect().x()
         yOffset = self.__pixmap.rect().y() - pol.boundingRect().y()
         translatedPol = pol.translated(xOffset, yOffset)
         
         pixmap2 = QPixmap(pol.boundingRect().size())
         pixmap2.fill(Qt.transparent)
         
         pt = QPainter()
         pt.begin(pixmap2)
         if pt.paintEngine().hasFeature(QPaintEngine.PorterDuff):
             pt.setRenderHints(
                 QPainter.Antialiasing |
                 QPainter.HighQualityAntialiasing |
                 QPainter.SmoothPixmapTransform,
                 True)
             pt.setBrush(Qt.black)
             pt.setPen(QPen(QBrush(Qt.black), 0.5))
             pt.drawPolygon(translatedPol)
             pt.setCompositionMode(QPainter.CompositionMode_SourceIn)
         else:
             pt.setClipRegion(QRegion(translatedPol))
             pt.setCompositionMode(QPainter.CompositionMode_Source)
         
         pt.drawPixmap(pixmap2.rect(), self.__pixmap, pol.boundingRect())
         pt.end()
         
         self.grabbed.emit(pixmap2)
コード例 #10
0
ファイル: _CustomWidgets.py プロジェクト: saknayo/sspainter
class ModCrossButton(QPushButton):
    def __init__(self,parent,path=None):
        QPushButton.__init__(self,parent)

        self.parent=parent


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


    def paintEvent(self,event):
        self.wide=self.width()
        self.high=self.height()
        self.xdis=self.wide/7
        self.ydis=self.xdis

        self.path=QPainterPath()
        self.path.setFillRule(Qt.OddEvenFill)

        self.path.moveTo(self.wide/2, self.high/2-self.xdis)
        self.path.arcTo(0,0, self.wide, self.high,0,360)
        #self.path.closeSubpath()

        self.path.moveTo(self.wide/2-self.xdis/2, self.ydis)
        self.path.lineTo(self.wide/2-self.xdis/2, self.high/2-self.xdis/2)
        self.path.lineTo(self.ydis, self.high/2-self.xdis/2)
        self.path.lineTo(self.ydis, self.high/2+self.xdis/2)
        self.path.lineTo(self.wide/2-self.xdis/2, self.high/2+self.xdis/2)
        self.path.lineTo(self.wide/2-self.xdis/2, self.high-self.ydis)
        self.path.lineTo(self.wide/2+self.xdis/2, self.high-self.ydis)
        self.path.lineTo(self.wide/2+self.xdis/2, self.high/2+self.xdis/2)
        self.path.lineTo(self.wide-self.ydis, self.high/2+self.xdis/2)
        self.path.lineTo(self.wide-self.ydis, self.high/2-self.xdis/2)
        self.path.lineTo(self.wide/2+self.xdis/2, self.high/2-self.xdis/2)
        self.path.lineTo(self.wide/2+self.xdis/2, self.ydis)
        self.path.closeSubpath()

        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.drawPath(self.path)
        self.painter.end()

    #def mousePressEvent(self,ev):
    #    self.parent.close()

    def enterEvent(self,ev):
        self.backgroundColor.setRgb(242,146,52) 
        self.update()
        
    def leaveEvent(self,ev):
        self.backgroundColor.setRgb(157,157,157)
        self.update()
コード例 #11
0
    def __redrawColorLabel(self, label, lc, uc):
        pixmap = QPixmap(101, 26)
        painter = QPainter(pixmap)
        lowerColorRect = QRect(0, 0, 50, 25)
        upperColorRect = QRect(50, 0, 50, 25)

        font = QFont("Times", 11)
        painter.setFont(font)

        painter.setPen(Qt.black)
        painter.setBrush(lc)
        painter.drawRect(lowerColorRect)
        lgray = lc.red() + lc.green() + lc.blue()
        painter.setPen(self.invert(lc))
        painter.drawText(lowerColorRect.translated(8, 2), 0, str(lgray))

        painter.setPen(Qt.black)
        painter.setBrush(uc)
        painter.drawRect(upperColorRect)
        ugray = uc.red() + uc.green() + uc.blue()
        painter.setPen(self.invert(uc))
        painter.drawText(upperColorRect.translated(8, 2), 0, str(ugray))
        del painter

        label.setPixmap(pixmap)
コード例 #12
0
ファイル: resizehelper.py プロジェクト: theall/Python-Tiled
 def paintEvent(self, event):
     _size = self.size() - QSize(2, 2)
     if (_size.isEmpty()):
         return
     origX = (_size.width() - self.mNewSize.width() * self.mScale) / 2 + 0.5
     origY = (_size.height() - self.mNewSize.height() * self.mScale) / 2 + 0.5
     oldRect = QRect(self.mOffset, self.mOldSize)
     painter = QPainter(self)
     painter.translate(origX, origY)
     painter.scale(self.mScale, self.mScale)
     pen = QPen(Qt.black)
     pen.setCosmetic(True)
     painter.setPen(pen)
     painter.drawRect(QRect(QPoint(0, 0), self.mNewSize))
     pen.setColor(Qt.white)
     painter.setPen(pen)
     painter.setBrush(Qt.white)
     painter.setOpacity(0.5)
     painter.drawRect(oldRect)
     pen.setColor(Qt.black)
     pen.setStyle(Qt.DashLine)
     painter.setOpacity(1.0)
     painter.setBrush(Qt.NoBrush)
     painter.setPen(pen)
     painter.drawRect(oldRect)
     painter.end()
コード例 #13
0
ファイル: E5Led.py プロジェクト: pycom/EricShort
 def __paintRound(self):
     """
     Private method to paint a round raised LED.
     """
     # Initialize coordinates, width and height of the LED
     width = self.__getBestRoundSize()
     
     # Calculate the gradient for the LED
     wh = width / 2
     color = self.__led_on and self.__led_color or self.__offcolor
     gradient = QRadialGradient(wh, wh, wh, 0.8 * wh, 0.8 * wh)
     gradient.setColorAt(0.0, color.lighter(200))
     gradient.setColorAt(0.6, color)
     if self.__framedLed:
         gradient.setColorAt(0.9, color.darker())
         gradient.setColorAt(1.0, self.palette().color(QPalette.Dark))
     else:
         gradient.setColorAt(1.0, color.darker())
     
     # now do the drawing
     paint = QPainter(self)
     paint.setRenderHint(QPainter.Antialiasing, True)
     paint.setBrush(QBrush(gradient))
     paint.setPen(Qt.NoPen)
     paint.drawEllipse(1, 1, width, width)
     paint.end()
コード例 #14
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()
コード例 #15
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()
コード例 #16
0
ファイル: padulator.py プロジェクト: sparsile/padulator
    def paintEvent(self, event):
        # Check whether this orb is enhanced
        if type(self.parent) == Board:
            enh = self.parent.enhanced[self.position]
        else:
            enh = False

        painter = QPainter(self)
        painter.drawPixmap(event.rect().adjusted(2,2,-2,-2), self.pixmap())

        w = event.rect().width()

        if enh:
            path = QPainterPath()

            pen = QPen()
            pen.setWidth(1);
            pen.setBrush(Qt.white)

            brush = QBrush(Qt.yellow)

            font = QFont()
            font.setPointSize(20)
            font.setWeight(QFont.Black)
            
            path.addText(event.rect().x()+w-15,event.rect().y()+w-5,font,'+')

            painter.setPen(pen)
            painter.setBrush(brush)
            painter.setFont(font)

            painter.drawPath(path)
コード例 #17
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
コード例 #18
0
ファイル: lineedit.py プロジェクト: AGProjects/blink-qt
    def paintEvent(self, event):
        painter = QPainter(self)
        icon = self.icon_pressed if self.isDown() else self.icon
        if icon is not None:
            x = (self.width() - icon.width()) / 2
            y = (self.height() - icon.height()) / 2
            painter.drawPixmap(x, y, icon)
        else:
            width = self.width()
            height = self.height()

            padding = width / 5
            radius = width - 2*padding

            palette = self.palette()

            # Mid is darker than Dark. Go figure... -Dan
            bg_color = palette.color(QPalette.Mid) if self.isDown() else palette.color(QPalette.Dark)
            fg_color = palette.color(QPalette.Window)  # or QPalette.Base for white

            painter.setRenderHint(QPainter.Antialiasing, True)
            painter.setBrush(bg_color)
            painter.setPen(bg_color)
            painter.drawEllipse(padding, padding, radius, radius)

            padding = padding * 2
            painter.setPen(fg_color)
            painter.drawLine(padding, padding, width-padding, height-padding)
            painter.drawLine(padding, height-padding, width-padding, padding)
コード例 #19
0
ファイル: inclusion.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)
     # INIT THE LINE
     p1 = QPointF(((kwargs['w'] - 54) / 2), kwargs['h'] / 2)
     p2 = QPointF(((kwargs['w'] - 54) / 2) + 54 - 2, kwargs['h'] / 2)
     line = QLineF(p1, p2)
     # CLACULATE HEAD COORDS
     angle = line.angle()
     p1 = QPointF(line.p2().x() + 2, line.p2().y())
     p2 = p1 - QPointF(sin(angle + M_PI / 3.0) * 8, cos(angle + M_PI / 3.0) * 8)
     p3 = p1 - QPointF(sin(angle + M_PI - M_PI / 3.0) * 8, cos(angle + M_PI - M_PI / 3.0) * 8)
     # INITIALIZE HEAD
     head = QPolygonF([p1, p2, p3])
     # DRAW EDGE LINE
     painter.setRenderHint(QPainter.Antialiasing)
     painter.setPen(QPen(QColor(0, 0, 0), 1.1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin))
     painter.drawLine(line)
     # DRAW EDGE HEAD
     painter.setPen(QPen(QColor(0, 0, 0), 1.1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin))
     painter.setBrush(QColor(0, 0, 0))
     painter.drawPolygon(head)
     return pixmap
コード例 #20
0
ファイル: preView.py プロジェクト: ilastik/ilastik
 def updateFilledCircle(self, s):
     size = s * self.zoom
     pixmap = QPixmap(self.width(), self.height())
     pixmap.fill(Qt.transparent)
     #painter filled ellipse
     p = QPalette()
     painter = QPainter()
     painter.begin(pixmap)
     painter.setRenderHint(QPainter.Antialiasing)
     brush = QBrush(p.link().color())
     painter.setBrush(brush)
     painter.setOpacity(0.4)
     painter.drawEllipse(QRect(old_div(self.width(),2) - old_div(size,2), old_div(self.height(),2) - old_div(size,2), size, size))
     painter.end()
     #painter ellipse 2
     painter2 = QPainter()
     painter2.begin(pixmap)
     painter2.setRenderHint(QPainter.Antialiasing)
     pen2 = QPen(Qt.green)
     pen2.setWidth(1)
     painter2.setPen(pen2)
     painter2.drawEllipse(QRect(old_div(self.width(),2) - old_div(size,2), old_div(self.height(),2) - old_div(size,2), size, size))
     painter2.end()
     
     self.ellipseLabel.setPixmap(QPixmap(pixmap))
     self.lastSize = s
コード例 #21
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)
コード例 #22
0
ファイル: letteritem.py プロジェクト: Axel-Erfurt/pyqt5
    def createImage(self, transform):
        scaledRect = transform.mapRect(QRect(0, 0, 25, 25))
        image = QImage(scaledRect.width(), scaledRect.height(),
                QImage.Format_ARGB32_Premultiplied)
        image.fill(0)
        painter = QPainter(image)
        painter.scale(transform.m11(), transform.m22())
        painter.setRenderHints(QPainter.TextAntialiasing | QPainter.Antialiasing | QPainter.SmoothPixmapTransform)
        painter.setPen(Qt.NoPen)

        if Colors.useEightBitPalette:
            painter.setBrush(QColor(102, 175, 54))
            painter.drawEllipse(0, 0, 25, 25)
            painter.setFont(Colors.tickerFont())
            painter.setPen(QColor(255, 255, 255))
            painter.drawText(10, 15, self.letter)
        else:
            brush = QLinearGradient(0, 0, 0, 25)
            brush.setSpread(QLinearGradient.PadSpread)
            brush.setColorAt(0.0, QColor(102, 175, 54, 200))
            brush.setColorAt(1.0, QColor(102, 175, 54, 60))
            painter.setBrush(brush)
            painter.drawEllipse(0, 0, 25, 25)
            painter.setFont(Colors.tickerFont())
            painter.setPen(QColor(255, 255, 255, 255))
            painter.drawText(10, 15, self.letter)

        return image
コード例 #23
0
ファイル: preView.py プロジェクト: DerThorsten/ilastik
 def updateCircle(self, s):
     size = s * self.zoom
     pixmap = QPixmap(self.width(), self.height())
     pixmap.fill(Qt.transparent)
     #painter ellipse 1
     painter = QPainter()
     painter.begin(pixmap)
     painter.setRenderHint(QPainter.Antialiasing)
     pen = QPen(Qt.red)
     pen.setWidth(3)
     painter.setPen(pen)
     brush = QBrush(Qt.green)
     painter.setBrush(brush)
     painter.drawEllipse(QRect(old_div(self.width(),2) - old_div(size,2), old_div(self.height(),2) - old_div(size,2), size, size))
     painter.end()
     #painter ellipse 2
     painter2 = QPainter()
     painter2.begin(pixmap)
     painter2.setRenderHint(QPainter.Antialiasing)
     pen2 = QPen(Qt.green)
     pen2.setStyle(Qt.DotLine)
     pen2.setWidth(3)
     painter2.setPen(pen2)
     painter2.drawEllipse(QRect(old_div(self.width(),2) - old_div(size,2), old_div(self.height(),2) - old_div(size,2), size, size))
     painter2.end()
     
     self.ellipseLabel.setPixmap(QPixmap(pixmap))
     self.lastSize = s
コード例 #24
0
    def _redrawColorLabel(self, labelIndex, lc, uc, lValue, uValue) :
        if labelIndex >= len(self.__colorLabels) :
            return
        label = self.__colorLabels[labelIndex]
        pixmap = QPixmap(101, 26)
        painter = QPainter(pixmap)
        lowerColorRect = QRect(0, 0, 50, 25)
        upperColorRect = QRect(50, 0, 50, 25)

        font = QFont('Times', 11)
        painter.setFont(font)

        painter.setPen(Qt.black);
        painter.setBrush(lc);
        painter.drawRect(lowerColorRect);
        painter.setPen(self.invert(lc));
        painter.drawText(lowerColorRect.translated(8, 2), 0, str(lValue));

        painter.setPen(Qt.black);
        painter.setBrush(uc);
        painter.drawRect(upperColorRect);
        painter.setPen(self.invert(uc));
        painter.drawText(upperColorRect.translated(8, 2), 0, str(uValue));
        del painter

        label.setPixmap(pixmap);
コード例 #25
0
ファイル: ui_tools.py プロジェクト: Salmista-94/Ninja_PyQt5
    def paintEvent(self, event):
        painter = QPainter()
        painter.begin(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.fillRect(event.rect(), QBrush(QColor(255, 255, 255, 127)))
        painter.setPen(QPen(Qt.NoPen))

        for i in range(6):
            x_pos = self.width() / 2 + 30 * \
                math.cos(2 * math.pi * i / 6.0) - 10
            y_pos = self.height() / 2 + 30 * \
                math.sin(2 * math.pi * i / 6.0) - 10
            if (self.counter / 5) % 6 == i:
                linear_gradient = QLinearGradient(
                    x_pos + 10, x_pos, y_pos + 10, y_pos)
                linear_gradient.setColorAt(0, QColor(135, 206, 250))
                linear_gradient.setColorAt(1, QColor(0, 0, 128))
                painter.setBrush(QBrush(linear_gradient))
            else:
                linear_gradient = QLinearGradient(
                    x_pos - 10, x_pos, y_pos + 10, y_pos)
                linear_gradient.setColorAt(0, QColor(105, 105, 105))
                linear_gradient.setColorAt(1, QColor(0, 0, 0))
                painter.setBrush(QBrush(linear_gradient))
            painter.drawEllipse(
                x_pos,
                y_pos,
                20, 20)

        painter.end()
コード例 #26
0
ファイル: instance_of.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)
        # INITIALIZE EDGE LINE
        pp1 = QPointF(((kwargs['w'] - 52) / 2), kwargs['h'] / 2)
        pp2 = QPointF(((kwargs['w'] - 52) / 2) + 52 - 2, kwargs['h'] / 2)
        line = QLineF(pp1, pp2)
        # CALCULATE HEAD COORDINATES
        angle = radians(line.angle())
        p1 = QPointF(line.p2().x() + 2, line.p2().y())
        p2 = p1 - QPointF(sin(angle + M_PI / 3.0) * 8, cos(angle + M_PI / 3.0) * 8)
        p3 = p1 - QPointF(sin(angle + M_PI - M_PI / 3.0) * 8, cos(angle + M_PI - M_PI / 3.0) * 8)
        # INITIALIZE EDGE HEAD
        head = QPolygonF([p1, p2, p3])
        # DRAW THE POLYGON
        painter.setRenderHint(QPainter.Antialiasing)
        painter.setPen(QPen(QColor(0, 0, 0), 1.1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin))
        painter.drawLine(line)
        # DRAW HEAD
        painter.setPen(QPen(QColor(0, 0, 0), 1.1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin))
        painter.setBrush(QColor(0, 0, 0))
        painter.drawPolygon(head)
        # DRAW THE TEXT ON TOP OF THE EDGE
        space = 2 if Platform.identify() is Platform.Darwin else 0
        painter.setFont(Font('Arial', 9, Font.Light))
        painter.drawText(pp1.x() + space, (kwargs['h'] / 2) - 4, 'instanceOf')

        return pixmap
コード例 #27
0
ファイル: featureTableWidget.py プロジェクト: ilastik/ilastik
 def drawPixmapFor3d(self):
     self.pixmap3d = QPixmap(self.itemWidth, self.itemHeight)
     self.pixmap3d.fill(Qt.transparent)
     painter = QPainter()
     painter.begin(self.pixmap3d)
     painter.setRenderHint(QPainter.Antialiasing)
     pen = QPen()
     pen.setWidth(2)
     painter.setPen(pen)
     painter.setBrush(QBrush(QColor(220, 220, 220)))
     top = [QPoint(5, 10),
            QPoint(self.itemWidth - 10, 10),
            QPoint(self.itemWidth - 5, 5),
            QPoint(10, 5),
            QPoint(5, 10)]
     painter.drawConvexPolygon(*top)
     left = [QPoint(self.itemWidth - 10, 10),
             QPoint(self.itemWidth - 10, self.itemHeight - 5),
             QPoint(self.itemWidth - 5, self.itemHeight - 10),
             QPoint(self.itemWidth - 5, 5),
             QPoint(self.itemWidth - 10, 10)]
     painter.drawConvexPolygon(*left)
     painter.setBrush(QBrush())
     painter.drawRect(QRect(5, 10, self.itemWidth - 15, self.itemHeight - 15))
     painter.drawText(QRect(5, 10, self.itemWidth - 15, self.itemHeight - 15), Qt.AlignCenter, '3D')
     painter.end()
コード例 #28
0
ファイル: qt.py プロジェクト: vialectrum/vialectrum
    def paintQR(self, data):
        if not data:
            return
        qr = qrcode.QRCode()
        qr.add_data(data)
        matrix = qr.get_matrix()
        k = len(matrix)
        border_color = Qt.white
        base_img = QImage(k * 5, k * 5, QImage.Format_ARGB32)
        base_img.fill(border_color)
        qrpainter = QPainter()
        qrpainter.begin(base_img)
        boxsize = 5
        size = k * boxsize
        left = (base_img.width() - size)/2
        top = (base_img.height() - size)/2
        qrpainter.setBrush(Qt.black)
        qrpainter.setPen(Qt.black)

        for r in range(k):
            for c in range(k):
                if matrix[r][c]:
                    qrpainter.drawRect(left+c*boxsize, top+r*boxsize, boxsize - 1, boxsize - 1)
        qrpainter.end()
        return base_img
コード例 #29
0
ファイル: minimap.py プロジェクト: theall/Python-Tiled
    def paintEvent(self, pe):
        super().paintEvent(pe)
        if (self.mRedrawMapImage):
            self.renderMapToImage()
            self.mRedrawMapImage = False

        if (self.mMapImage.isNull() or self.mImageRect.isEmpty()):
            return
        p = QPainter(self)
        p.setRenderHints(QPainter.SmoothPixmapTransform)
        backgroundColor = QColor(Qt.darkGray)
        if (self.mMapDocument and self.mMapDocument.map().backgroundColor().isValid()):
            backgroundColor = self.mMapDocument.map().backgroundColor()
        p.setBrush(backgroundColor)
        p.setPen(Qt.NoPen)
        p.drawRect(self.contentsRect())
        p.drawImage(self.mImageRect, self.mMapImage)
        viewRect = self.viewportRect()
        p.setBrush(Qt.NoBrush)
        p.setPen(QColor(0, 0, 0, 128))
        p.translate(1, 1)
        p.drawRect(viewRect)
        outLinePen = QPen(QColor(255, 0, 0), 2)
        outLinePen.setJoinStyle(Qt.MiterJoin)
        p.translate(-1, -1)
        p.setPen(outLinePen)
        p.drawRect(viewRect)
        p.end()
コード例 #30
0
ファイル: featureTableWidget.py プロジェクト: ilastik/ilastik
    def setNameAndBrush(self, sigma, color=Qt.black):
        self.sigma = sigma
        self.setText(f'σ{self.column}'.translate(self.sub_trans))
        if self.sigma is not None:
            total_window = (1 + 2 * int(self.sigma * self.window_size + 0.5))
            self.setToolTip(f'sigma = {sigma:.1f} pixels, window diameter = {total_window:.1f}')
        font = QFont()
        font.setPointSize(10)
        # font.setBold(True)
        self.setFont(font)
        self.setForeground(color)

        pixmap = QPixmap(self.pixmapSize)
        pixmap.fill(Qt.transparent)
        painter = QPainter()
        painter.begin(pixmap)
        painter.setRenderHint(QPainter.Antialiasing, True)
        painter.setPen(color)
        brush = QBrush(color)
        painter.setBrush(brush)
        painter.drawEllipse(QRect(old_div(self.pixmapSize.width(), 2) - old_div(self.brushSize, 2),
                                  old_div(self.pixmapSize.height(), 2) - old_div(self.brushSize, 2),
                                  self.brushSize, self.brushSize))
        painter.end()
        self.setIcon(QIcon(pixmap))
        self.setTextAlignment(Qt.AlignVCenter)
コード例 #31
0
    def paintEvent(self, event):
        qp = QPainter(self)

        qp.setPen(Qt.black)
        size = self.size()

        # Colored rectangles
        qp.setBrush(QColor(200, 0, 0))
        qp.drawRect(0, 0, 100, 100)

        qp.setBrush(QColor(0, 200, 0))
        qp.drawRect(100, 0, 100, 100)

        qp.setBrush(QColor(0, 0, 200))
        qp.drawRect(200, 0, 100, 100)

        # Color Effect
        for i in range(0, 100):
            qp.setBrush(QColor(i * 10, 0, 0))
            qp.drawRect(10 * i, 100, 10, 32)

            qp.setBrush(QColor(i * 10, i * 10, 0))
            qp.drawRect(10 * i, 100 + 32, 10, 32)

            qp.setBrush(QColor(i * 2, i * 10, i * 1))
            qp.drawRect(10 * i, 100 + 64, 10, 32)
コード例 #32
0
    def paintEvent(self, event):
        if (self.segment_status == True):
            print("segment")
            painter = QPainter(self)
            painter.begin(self)

            pen = QPen(Qt.red, 2, Qt.SolidLine)
            pp = QPainter(self.pix)
            pp.setPen(pen)
            pos_size = len(self.pos_xy)
            if (pos_size >= 3):
                for i in range(0, pos_size - 1):
                    #print(i,"i")
                    point_start = self.pos_xy[i]
                    point_end = self.pos_xy[i + 1]
                    if point_end == (-1, -1) and i == pos_size - 2:
                        break
                    elif point_end == (-1, -1) and i != pos_size - 2:
                        i += 1  # no use
                    elif point_start == (-1, -1):
                        continue
                    else:
                        print(point_start, "start")
                        print(point_end, "end")
                        pp.drawLine(point_start[0], point_start[1],
                                    point_end[0], point_end[1])

            painter.drawPixmap(0, 0, self.pix)
            painter.end()

        elif (self.dir_status == True):
            print("dir")
            painter = QPainter(self)
            painter.begin(self)

            # draw the direction with arrow
            pp = QPainter(self.pix)
            pen = QPen(Qt.green, 2, Qt.SolidLine)
            pp.setPen(pen)
            brush = QBrush(Qt.green, Qt.SolidPattern)
            pp.setBrush(brush)

            line = QLineF(QPointF(self.lastPoint.x(), self.lastPoint.y()),
                          QPointF(self.endPoint.x(), self.endPoint.y()))
            v = line.unitVector()
            v.setLength(8)
            v.translate(QPointF(line.dx(), line.dy()))
            n = v.normalVector()
            n.setLength(n.length() * 0.5)
            n2 = n.normalVector().normalVector()
            p1 = v.p2()
            p2 = n.p2()
            p3 = n2.p2()
            pp.drawLine(self.lastPoint.x(), self.lastPoint.y(),
                        self.endPoint.x(), self.endPoint.y())
            pp.drawPolygon(p1, p2, p3)

            painter.drawPixmap(0, 0, self.pix)
            painter.end()
        else:
            painter = QPainter(self)
            painter.begin(self)

            painter.drawPixmap(0, 0, self.pix)
            painter.end()
        '''
コード例 #33
0
 def __init__(self, parent=None):
     super(ThemePage, self).__init__(parent)
     self.parent = parent
     self.setObjectName('settingsthemepage')
     mainLayout = QVBoxLayout()
     mainLayout.setSpacing(15)
     pen = QPen(
         QColor('#4D5355' if self.parent.theme == 'dark' else '#B9B9B9'))
     pen.setWidth(2)
     theme_light = QPixmap(':/images/theme-light.png', 'PNG')
     painter = QPainter(theme_light)
     painter.setPen(pen)
     painter.setBrush(Qt.NoBrush)
     painter.drawRect(0, 0, theme_light.width(), theme_light.height())
     theme_dark = QPixmap(':/images/theme-dark.png', 'PNG')
     painter = QPainter(theme_dark)
     painter.setPen(pen)
     painter.setBrush(Qt.NoBrush)
     painter.drawRect(0, 0, theme_dark.width(), theme_dark.height())
     self.lightRadio = QRadioButton(self)
     self.lightRadio.setIcon(QIcon(theme_light))
     self.lightRadio.setIconSize(QSize(165, 121))
     self.lightRadio.setCursor(Qt.PointingHandCursor)
     self.lightRadio.clicked.connect(self.switchTheme)
     self.lightRadio.setChecked(self.parent.theme == 'light')
     self.darkRadio = QRadioButton(self)
     self.darkRadio.setIcon(QIcon(theme_dark))
     self.darkRadio.setIconSize(QSize(165, 121))
     self.darkRadio.setCursor(Qt.PointingHandCursor)
     self.darkRadio.clicked.connect(self.switchTheme)
     self.darkRadio.setChecked(self.parent.theme == 'dark')
     themeLayout = QGridLayout()
     themeLayout.setColumnStretch(0, 1)
     themeLayout.addWidget(self.lightRadio, 0, 1)
     themeLayout.addWidget(self.darkRadio, 0, 3)
     themeLayout.addWidget(QLabel('Light', self), 1, 1, Qt.AlignHCenter)
     themeLayout.setColumnStretch(2, 1)
     themeLayout.addWidget(QLabel('Dark', self), 1, 3, Qt.AlignHCenter)
     themeLayout.setColumnStretch(4, 1)
     themeGroup = QGroupBox('Theme')
     themeGroup.setLayout(themeLayout)
     mainLayout.addWidget(themeGroup)
     index_leftRadio = QRadioButton('Clips on left')
     index_leftRadio.setToolTip('Display Clip Index on the left hand side')
     index_leftRadio.setCursor(Qt.PointingHandCursor)
     index_leftRadio.setChecked(self.parent.parent.indexLayout == 'left')
     index_rightRadio = QRadioButton('Clips on right')
     index_rightRadio.setToolTip(
         'Display Clip Index on the right hand side')
     index_rightRadio.setCursor(Qt.PointingHandCursor)
     index_rightRadio.setChecked(self.parent.parent.indexLayout == 'right')
     index_buttonGroup = QButtonGroup(self)
     index_buttonGroup.addButton(index_leftRadio, 1)
     index_buttonGroup.addButton(index_rightRadio, 2)
     # noinspection PyUnresolvedReferences
     index_buttonGroup.buttonClicked[int].connect(
         self.parent.parent.setClipIndexLayout)
     indexLayout = QHBoxLayout()
     indexLayout.addWidget(index_leftRadio)
     indexLayout.addWidget(index_rightRadio)
     layoutGroup = QGroupBox('Layout')
     layoutGroup.setLayout(indexLayout)
     mainLayout.addWidget(layoutGroup)
     toolbar_labels = self.parent.settings.value('toolbarLabels',
                                                 'beside',
                                                 type=str)
     toolbar_notextRadio = QRadioButton('No text (buttons only)', self)
     toolbar_notextRadio.setToolTip('No text (buttons only)')
     toolbar_notextRadio.setCursor(Qt.PointingHandCursor)
     toolbar_notextRadio.setChecked(toolbar_labels == 'none')
     toolbar_underRadio = QRadioButton('Text under buttons', self)
     toolbar_underRadio.setToolTip('Text under buttons')
     toolbar_underRadio.setCursor(Qt.PointingHandCursor)
     toolbar_underRadio.setChecked(toolbar_labels == 'under')
     toolbar_besideRadio = QRadioButton('Text beside buttons', self)
     toolbar_besideRadio.setToolTip('Text beside buttons')
     toolbar_besideRadio.setCursor(Qt.PointingHandCursor)
     toolbar_besideRadio.setChecked(toolbar_labels == 'beside')
     toolbar_buttonGroup = QButtonGroup(self)
     toolbar_buttonGroup.addButton(toolbar_besideRadio, 1)
     toolbar_buttonGroup.addButton(toolbar_underRadio, 2)
     toolbar_buttonGroup.addButton(toolbar_notextRadio, 3)
     # noinspection PyUnresolvedReferences
     toolbar_buttonGroup.buttonClicked[int].connect(self.setLabelStyle)
     toolbarLayout = QGridLayout()
     toolbarLayout.addWidget(toolbar_besideRadio, 0, 0)
     toolbarLayout.addWidget(toolbar_underRadio, 0, 1)
     toolbarLayout.addWidget(toolbar_notextRadio, 1, 0)
     toolbarGroup = QGroupBox('Toolbar')
     toolbarGroup.setLayout(toolbarLayout)
     mainLayout.addWidget(toolbarGroup)
     nativeDialogsCheckbox = QCheckBox('Use native dialogs', self)
     nativeDialogsCheckbox.setToolTip('Use native file dialogs')
     nativeDialogsCheckbox.setCursor(Qt.PointingHandCursor)
     nativeDialogsCheckbox.setChecked(self.parent.parent.nativeDialogs)
     nativeDialogsCheckbox.stateChanged.connect(self.setNativeDialogs)
     nativeDialogsLabel = QLabel(
         '''
         <b>ON:</b> use native dialog widgets as provided by your operating system
         <br/>
         <b>OFF:</b> use a generic file open & save dialog widget provided by the Qt toolkit
         <br/><br/>
         <b>NOTE:</b> native dialogs should always be used if working
     ''', self)
     nativeDialogsLabel.setObjectName('nativedialogslabel')
     nativeDialogsLabel.setTextFormat(Qt.RichText)
     nativeDialogsLabel.setWordWrap(True)
     advancedLayout = QVBoxLayout()
     advancedLayout.addWidget(nativeDialogsCheckbox)
     advancedLayout.addWidget(nativeDialogsLabel)
     advancedGroup = QGroupBox('Advanced')
     advancedGroup.setLayout(advancedLayout)
     mainLayout.addWidget(advancedGroup)
     mainLayout.addStretch(1)
     self.setLayout(mainLayout)
コード例 #34
0
ファイル: button_menu.py プロジェクト: mrazr/antarstick
 def paint(self, painter: QPainter, options, widget=None):
     painter.setBrush(self.fill_brush)
     painter.setPen(self.outline_pen)
     painter.drawRoundedRect(self.rect, 5, 5)
コード例 #35
0
class Canvas(QWidget):
    def __init__(self, size: int = 10,
                 parent: Optional[QWidget] = None,
                 *args, **kwargs) -> None:
        super(Canvas, self).__init__(*args, **kwargs)
        self._qp = QPainter()
        self._timer = QTimer()
        self._timer.timeout.connect(self.redraw)
        self._colors = {
            0: {
                'cells': QColor('green'),
                'background': QColor('white'),
                'grid': QColor('black')
            }, 1: {
                'cells': QColor('black'),
                'background': QColor('white'),
                'grid': QColor('black')
            }}

        self.next_generation_signal = GenerationUpdateSignal()

        self.game = Game()
        self.size = size
        self._color_scheme = self._colors[0]
        self._grid = []
        self._rects = []

    @property
    def color_scheme(self) -> Dict[str, QColor]:
        return self._color_scheme

    @color_scheme.setter
    def color_scheme(self, color_index: int) -> None:
        self._color_scheme = self._colors[color_index]

    def start(self) -> None:
        self.game.width = self.width() // self.size
        self.game.height = self.height() // self.size
        self._grid.clear()
        self.clear()
        self.spawn()

    def continue_game(self, upd_time: int) -> None:
        self._timer.start(upd_time)

    def pause(self) -> None:
        self._timer.stop()

    def clear(self) -> None:
        self.game.reset()
        self.redraw(next_generation=False)

    def redraw(self, next_generation: bool = True) -> None:
        self.draw_grid()

        if next_generation:
            self.game.next_generation()

        self.draw_rects()
        self.update()
        self.next_generation_signal.generation_update.emit(
            self.game.generation)

    def spawn(self) -> None:
        self.game.random_generate(count=1000)
        self.redraw(next_generation=False)

    def draw_grid(self) -> None:
        if not self._grid:
            for x in range(0, self.width() + self.size, self.size):
                self._grid.append(QLine(x, 0, x, self.height()))
            for y in range(0, self.height() + self.size, self.size):
                self._grid.append(QLine(0, y, self.width(), y))

    def draw_rects(self) -> None:
        self._rects.clear()
        for x in range(self.game.width):
            for y in range(self.game.height):
                if self.game.area[y][x]:
                    rect = QRect(x * self.size, y * self.size,
                                 self.size, self.size)
                    value = self.game.area[y][x]
                    self._rects.append((rect, value))

    def draw_rect(self, x: int, y: int) -> None:
        x, y = x // self.size, y // self.size
        self.game.spawn_or_destroy(x, y)
        self.redraw(next_generation=False)

    def set_aging(self, mode: bool,
                  max_age: int, end_breeding_age: int) -> None:
        self.clear()
        self.game.aging = mode
        self.game.max_age = max_age
        self.game.end_breeding_age = end_breeding_age

    def paintEvent(self, event: QEvent) -> None:
        import copy

        self._qp.begin(self)
        self._qp.setBrush(QBrush(self._color_scheme['background']))
        self._qp.drawRect(QRectF(0, 0, self.width(), self.height()))

        self._qp.setPen(QPen(self._color_scheme['grid']))

        for line in self._grid:
            self._qp.drawLine(line)

        for rect, value in self._rects:
            color = copy.copy(self._color_scheme['cells'])

            if self.game.aging:
                color.setAlpha(value * self.game.alpha)

            self._qp.setBrush(QBrush(color))
            self._qp.drawRect(rect)

        self._qp.end()

    def mousePressEvent(self, event: QEvent) -> None:
        self.draw_rect(event.x(), event.y())
コード例 #36
0
ファイル: view.py プロジェクト: werelaxe/drops
 def draw_model(self, qp: QPainter):
     qp.setBrush(Qt.black)
     qp.drawRect(0, 0, self.width, self.height)
     qp.setBrush(Qt.red)
     qp.setPen(Qt.red)
     graphics.draw_model(self.model, qp)
コード例 #37
0
ファイル: app.py プロジェクト: ejherran/acaest
    def paintEvent(self, e):

        qp = QPainter()
        qp.begin(self)
        qp.setBrush(Qt.red)

        pen = QPen(Qt.blue)
        pen.setWidth(3)

        qp.setPen(pen)
        for a in self.aristas:

            pen = QPen(Qt.blue)
            pen.setWidth(3)
            qp.setPen(pen)

            points = []
            ct = 0
            while (ct < len(a)):
                points.append(QPoint(a[ct][0], a[ct][1]))
                ct = ct + 1

            poly = QPolygon(points)
            qp.drawPolyline(poly)

            foo = self.arrow(a[1][0], a[1][1], a[0][0], a[0][1], 25)
            fod = self.arrow(a[ct - 2][0], a[ct - 2][1], a[ct - 1][0],
                             a[ct - 1][1], 25)

            pen = QPen(Qt.red)
            pen.setWidth(3)
            qp.setPen(pen)
            qp.setBrush(Qt.red)

            if (foo != None):
                poly = QPolygon([
                    QPoint(foo[0], foo[1]),
                    QPoint(foo[2], foo[3]),
                    QPoint(foo[4], foo[5])
                ])
                qp.drawPolygon(poly)

            if (fod != None):
                poly = QPolygon([
                    QPoint(fod[0], fod[1]),
                    QPoint(fod[2], fod[3]),
                    QPoint(fod[4], fod[5])
                ])
                qp.drawPolygon(poly)

        qp.setBrush(Qt.green)
        pen = QPen(Qt.black)
        pen.setWidth(1)
        qp.setPen(pen)

        for a in self.aristas:
            ct = 1
            while (ct < len(a) - 1):

                qp.drawEllipse(a[ct][0] - 5, a[ct][1] - 5, 10, 10)

                if (len(a[ct]) == 3):

                    fb = QFont('Linux Libertine Mono O', 10)
                    fm = QFontMetrics(fb)

                    qp.setFont(fb)
                    w = fm.width(a[ct][2])

                    qp.setBrush(Qt.white)
                    qp.drawRect(a[ct][0] - (w / 2) - 10, a[ct][1], w + 20, 20)

                    qp.setBrush(Qt.green)
                    pen = QPen(Qt.black)
                    pen.setWidth(1)
                    qp.setPen(pen)

                    qp.drawText(a[ct][0] - (w / 2), a[ct][1] + 15, a[ct][2])

                ct = ct + 1

        qp.setPen(Qt.green)
        qp.setBrush(Qt.red)
        qp.setFont(QFont('Linux Libertine Mono O', 30))

        for n in self.nodos:
            qp.drawEllipse(n[0] - 25, n[1] - 25, 50, 50)
            qp.drawText(n[0] - 12, n[1] + 12, n[2])
コード例 #38
0
ファイル: settingWin.py プロジェクト: liangadam/gesmuse
 def paintEvent(self, QPaintEvent):
     painter = QPainter(self)
     painter.setBrush(Qt.white)
     painter.drawRect(self.rect())
コード例 #39
0
    def paint(
        self,
        painter: QtGui.QPainter,
        option: QStyleOptionGraphicsItem,
        widget: Optional[QWidget],
    ) -> None:

        # * title
        titlePath = QtGui.QPainterPath()
        titlePath.setFillRule(QtCore.Qt.WindingFill)

        titlePath.addRoundedRect(
            0,
            0,
            self._nodeWidth,
            self._nodeTitleHeight,
            self._nodeEdgeSize,
            self._nodeEdgeSize,
        )

        titlePath.addRect(
            0,
            self._nodeTitleHeight - self._nodeEdgeSize,
            self._nodeEdgeSize,
            self._nodeEdgeSize,
        )

        titlePath.addRect(
            self._nodeWidth - self._nodeEdgeSize,
            self._nodeTitleHeight - self._nodeEdgeSize,
            self._nodeEdgeSize,
            self._nodeEdgeSize,
        )

        painter.setPen(QtCore.Qt.NoPen)
        painter.setBrush(self._nodeTitleBrush)
        painter.drawPath(titlePath.simplified())

        # ? content
        ContentPath = QtGui.QPainterPath()
        ContentPath.setFillRule(QtCore.Qt.WindingFill)
        ContentPath.addRoundedRect(
            0,
            self._nodeTitleHeight,
            self._nodeWidth,
            self._nodeHeight - self._nodeTitleHeight,
            self._nodeEdgeSize,
            self._nodeEdgeSize,
        )
        ContentPath.addRect(
            0, self._nodeTitleHeight, self._nodeEdgeSize, self._nodeEdgeSize
        )
        ContentPath.addRect(
            self._nodeWidth - self._nodeEdgeSize,
            self._nodeTitleHeight,
            self._nodeEdgeSize,
            self._nodeEdgeSize,
        )
        painter.setPen(QtCore.Qt.NoPen)
        painter.setBrush(self._nodeBrushBackground)
        painter.drawPath(ContentPath.simplified())

        # ? outline
        outline = QtGui.QPainterPath()
        outline.addRoundedRect(
            0,
            0,
            self._nodeWidth,
            self._nodeHeight,
            self._nodeEdgeSize,
            self._nodeEdgeSize,
        )

        painter.setPen(
            self._nodePenDefault if not self.isSelected() else self._nodePenSelected
        )
        painter.setBrush(QtCore.Qt.NoBrush)
        painter.drawPath(outline.simplified())
コード例 #40
0
ファイル: calendarItem.py プロジェクト: Tan-zy/Qt5Notebook
 def drawBgCurrent(self, painter: QtGui.QPainter, color: QtGui.QColor):
     painter.save()
     painter.setPen(QtCore.Qt.NoPen)
     painter.setBrush(color)
     painter.drawRect(self.rect())
     painter.restore()
コード例 #41
0
ファイル: screen_window.py プロジェクト: sertraline/chizuhoru
    def mouseReleaseEvent(self, event):
        self.end = event.pos()
        self.update()

        if self.toolkit.switch == 0 and self.sel_rect \
                and event.buttons() == QtCore.Qt.LeftButton:
            self.scene_sel.setRect(self.begin.x(), self.begin.y(),
                                   self.end.x() - self.begin.x(),
                                   self.end.y() - self.begin.y())
            self.paint_allowed = False
        elif self.toolkit.switch == 0:
            self.paint_allowed = False
        if not self.paint_allowed:
            return

        self.paint_allowed = False

        if self.begin == self.end:
            return

        if self.toolkit.switch == 6:
            self.scene_sel.setRect(self.begin.x(), self.begin.y(),
                                   self.end.x() - self.begin.x(),
                                   self.end.y() - self.begin.y())
            rectwidth, rectheight, rectx, recty = (self.sel_rect.width(),
                                                   self.sel_rect.height(),
                                                   self.sel_rect.x(),
                                                   self.sel_rect.y())
            if "-" in str(rectwidth):
                rectx = rectx + rectwidth
                rectwidth = abs(rectwidth)
            if "-" in str(rectheight):
                recty = recty + rectheight
                rectheight = abs(rectheight)

            tmp = self.crop(self.pixmap().toImage())

            blurred = QtGui.QImage(tmp.size(),
                                   QtGui.QImage.Format_ARGB32_Premultiplied)
            blurred.fill(QtGui.QColor('transparent'))
            painter = QPainter(blurred)

            painter.setRenderHint(QPainter.HighQualityAntialiasing)
            painter.setRenderHint(QPainter.SmoothPixmapTransform)

            ctypes_blur(painter, tmp, 45, True, False)
            painter.end()

            dest = QtGui.QPixmap().fromImage(blurred)

            painter = QPainter(self.pixmap())
            painter.setRenderHint(QPainter.HighQualityAntialiasing)

            self.history.sequence += 'b'
            for _ in range(6):
                painter.drawPixmap(rectx, recty, rectwidth + 1, rectheight + 1,
                                   dest)
            self.history.blur.append(
                [rectx, recty, rectwidth, rectheight, dest])
            painter.end()
            self.update()

            self.begin = QtCore.QPoint()
            self.end = QtCore.QPoint()
            self.sel_rect = None
            self.scene_sel.setRect(0, 0, 0, 0)
            self.scene_px.setPixmap(self.pixmap())
            self.pixel_data = self.pixmap().toImage()
            return

        painter = QPainter(self.pixmap())
        painter.setRenderHint(QPainter.HighQualityAntialiasing)

        brush, pen, pen_outline = self.get_drawing_pen()

        painter.setBrush(brush)
        painter.setPen(pen)

        rect = self.build_rect()

        if self.toolkit.switch == 5:
            self.build_path()
            if not self.path:
                return
            self.history.sequence += 'f'
            self.history.free.append((self.path, pen, brush, pen_outline))

            if pen_outline:
                painter.setPen(pen_outline)
                painter.drawPath(self.path)
                painter.setPen(pen)
            painter.drawPath(self.path)

            self.pen_cords_track_list = []
            self.scene_px.setPixmap(self.pixmap())
            self.pixel_data = self.pixmap().toImage()
            self.update()
            return
        # draw on pixmap
        if self.toolkit.switch == 2:
            self.history.sequence += 'c'
            self.history.circle.append((rect, pen, brush, pen_outline))
            if pen_outline:
                painter.setPen(pen_outline)
                painter.drawEllipse(rect)
                painter.setPen(pen)
            painter.drawEllipse(rect)
        elif self.toolkit.switch == 3:
            self.history.sequence += 'r'
            self.history.rect.append((rect, pen, brush, pen_outline))
            if pen_outline:
                painter.setPen(pen_outline)
                painter.drawRect(rect)
                painter.setPen(pen)
            painter.drawRect(rect)
        elif self.toolkit.switch == 4:
            self.history.sequence += 'l'
            line = QtCore.QLine(self.begin.x(), self.begin.y(), self.end.x(),
                                self.end.y())
            if self.quadratic:
                line = QtCore.QLineF(self.begin.x(), self.begin.y(),
                                     self.end.x(), self.end.y())
                angle = self.line_align(line.angle())
                line.setAngle(angle)
            self.history.line.append(((line.x1(), line.y1(), line.x2(),
                                       line.y2()), pen, brush, pen_outline))
            if pen_outline:
                painter.setPen(pen_outline)
                painter.drawLine(line)
                painter.setPen(pen)
            painter.drawLine(line)

        self.begin = QtCore.QPoint()
        self.end = QtCore.QPoint()
        self.scene_px.setPixmap(self.pixmap())
        self.pixel_data = self.pixmap().toImage()
        self.update()
コード例 #42
0
ファイル: screen_window.py プロジェクト: sertraline/chizuhoru
    def paintEvent(self, event):
        super(ScreenWindow, self).paintEvent(event)

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

        brush, pen, pen_outline = self.get_drawing_pen()
        sel_pen = QtGui.QPen(self.toolkit.pen_selection_color, 1, Qt.SolidLine)
        sel_brush = QtGui.QBrush(self.toolkit.brush_selection_color)

        painter.setPen(pen)
        painter.setBrush(brush)

        if not self.cords:
            rect = self.build_rect()

            # if paint tool is selected and LMB clicked, process event
            if self.paint_allowed:
                if pen_outline:
                    painter.setPen(pen_outline)
                # switch 1: pen drawing, switch 5: free drawing
                if self.toolkit.switch == 5:
                    if not self.pen_point_list:
                        return
                    self.build_path()
                    if not self.path:
                        return

                    if pen_outline:
                        painter.drawPath(self.path)
                    painter.setPen(pen)
                    painter.drawPath(self.path)
                elif self.toolkit.switch == 2:
                    if pen_outline:
                        painter.drawEllipse(rect)
                    painter.setPen(pen)
                    painter.drawEllipse(rect)
                    self.draw_text(painter, rect.x(), rect.y(), rect.width(),
                                   rect.height())
                elif self.toolkit.switch == 3:
                    if pen_outline:
                        painter.drawRect(rect)
                    painter.setPen(pen)
                    painter.drawRect(rect)
                    self.draw_text(painter, rect.x(), rect.y(), rect.width(),
                                   rect.height())
                elif self.toolkit.switch == 4:
                    line = QtCore.QLineF(self.begin.x(), self.begin.y(),
                                         self.end.x(), self.end.y())
                    if self.quadratic:
                        line = QtCore.QLineF(self.begin.x(), self.begin.y(),
                                             self.end.x(), self.end.y())
                        angle = self.line_align(line.angle())
                        line.setAngle(angle)
                    if pen_outline:
                        painter.drawLine(line)
                    painter.setPen(pen)
                    painter.drawLine(line)
                    self.draw_text(painter,
                                   line.x1(),
                                   line.y1(),
                                   int(line.length()),
                                   float('%.2f' % line.angle()),
                                   offset=False)
                else:
                    # switch 0: selection, switch 6: blur
                    painter.setPen(sel_pen)
                    painter.setBrush(sel_brush)
                    if self.begin != self.end:
                        painter.drawRect(rect)
                        self.draw_text(painter, rect.x(), rect.y(),
                                       rect.width(), rect.height())
                        self.sel_rect = rect
            else:
                # redraw last selection rectangle on RMB click
                if self.sel_rect is not None:
                    painter.setPen(sel_pen)
                    painter.setBrush(sel_brush)
                    painter.drawRect(self.sel_rect)
                    self.draw_text(painter, self.sel_rect.x(),
                                   self.sel_rect.y(), self.sel_rect.width(),
                                   self.sel_rect.height())
        else:
            painter.setPen(sel_pen)
            painter.setBrush(sel_brush)
            painter.drawRect(self.cords)

            self.draw_text(painter, self.cords.x(), self.cords.y(),
                           self.cords.width(), self.cords.height())
            self.sel_rect = self.cords
            self.cords = None
コード例 #43
0
ファイル: screen_window.py プロジェクト: sertraline/chizuhoru
    def mouseMoveEvent(self, event):
        self.move_magnifier(event)
        # switch 1: pen drawing, switch 5: free drawing
        if (self.toolkit.switch == 1 or self.toolkit.switch == 5) \
                and event.buttons() == QtCore.Qt.LeftButton:
            if self.last_x is None:
                self.last_x = event.x()
                self.last_y = event.y()
                return

            painter = QPainter(self.pixmap())
            painter.setRenderHint(QPainter.HighQualityAntialiasing)

            brush, pen, _ = self.get_drawing_pen()
            painter.setBrush(brush)
            painter.setPen(pen)

            if self.toolkit.switch == 5:
                self.last_x = event.x()
                self.last_y = event.y()
                draw_args = QtCore.QPoint(self.last_x, self.last_y)
                self.pen_point_list.append(draw_args)
                self.pen_cords_track_list.append((event.x(), event.y()))
            else:
                draw_args = ((self.last_x, self.last_y, event.x(), event.y()),
                             pen, brush)
                if len(self.history.pen) == 0:
                    self.history.sequence += 'p'
                    self.history.pen.append([])
                else:
                    if len(self.history.pen[-1]) < 10:
                        self.history.pen[-1].append(draw_args)
                    else:
                        self.history.sequence += 'p'
                        self.history.pen.append([])
                        self.history.pen[-1].append(draw_args)

                painter.drawLine(*draw_args[0])

            self.update()
            self.last_x = event.x()
            self.last_y = event.y()

        elif event.buttons() == QtCore.Qt.LeftButton:
            self.end = event.pos()

            # don't display selection for tools not in list
            cases = [0, 6, 4, 3, 2]
            if any(self.toolkit.switch == x for x in cases) and self.scene_sel:
                x, y = self.begin.x(), self.begin.y()
                width, height = (self.end.x() - self.begin.x(),
                                 self.end.y() - self.begin.y())

                if self.quadratic:
                    rect = self.rect_quadratic(
                        QtCore.QRect(x, y, width, height))
                    x, y, width, height = rect.x(), rect.y(), rect.width(
                    ), rect.height()

                self.scene_sel.setRect(x + 0.4, y + 0.4, width, height)
            self.update()
コード例 #44
0
ファイル: screen_window.py プロジェクト: sertraline/chizuhoru
    def keyPressEvent(self, event):
        if event.modifiers() & Qt.ShiftModifier:
            self.quadratic = True
            return
        # is responsible for Ctrl-Z both in English and Cyrillic moonspeak
        elif (event.modifiers() & QtCore.Qt.ControlModifier) \
                and (event.nativeScanCode() == 52):
            if len(self.history.sequence) == 0:
                return

            self.render_background()

            painter = QPainter(self.pixmap())
            painter.setRenderHint(QPainter.HighQualityAntialiasing)

            pen_cnt = -1
            circl_cnt = -1
            rect_cnt = -1
            line_cnt = -1
            free_cnt = -1
            blur_cnt = -1
            for item in self.history.sequence[:-1]:
                if item == 'p':
                    pen_cnt += 1
                    args = self.history.pen[pen_cnt]
                    for pack in args:
                        painter.setPen(pack[1])
                        painter.setBrush(pack[2])
                        painter.drawLine(*pack[0])
                elif item == 'c':
                    circl_cnt += 1
                    args = self.history.circle[circl_cnt]
                    if args[-1]:
                        painter.setPen(args[-1])
                        painter.setBrush(args[2])
                        painter.drawEllipse(args[0])
                    painter.setPen(args[1])
                    painter.setBrush(args[2])
                    painter.drawEllipse(args[0])
                elif item == 'r':
                    rect_cnt += 1
                    args = self.history.rect[rect_cnt]
                    if args[-1]:
                        painter.setPen(args[-1])
                        painter.setBrush(args[2])
                        painter.drawRect(args[0])
                    painter.setPen(args[1])
                    painter.setBrush(args[2])
                    painter.drawRect(args[0])
                elif item == 'l':
                    line_cnt += 1
                    args = self.history.line[line_cnt]
                    if args[-1]:
                        painter.setPen(args[-1])
                        painter.setBrush(args[2])
                        painter.drawLine(*args[0])
                    painter.setPen(args[1])
                    painter.setBrush(args[2])
                    painter.drawLine(*args[0])
                elif item == 'f':
                    free_cnt += 1
                    args = self.history.free[free_cnt]
                    if args[-1]:
                        painter.setPen(args[-1])
                        painter.setBrush(args[2])
                        painter.drawPath(args[0])
                    painter.setPen(args[1])
                    painter.setBrush(args[2])
                    painter.drawPath(args[0])
                elif item == 'b':
                    blur_cnt += 1
                    args = self.history.blur[blur_cnt]
                    for _ in range(6):
                        painter.drawPixmap(*args)

            last_item = self.history.sequence[-1]
            items = [['p', self.history.pen], ['r', self.history.rect],
                     ['l', self.history.line], ['f', self.history.free],
                     ['b', self.history.blur], ['c', self.history.circle]]
            for item in items:
                if last_item == item[0]:
                    item[1].pop(-1)

            self.history.sequence = self.history.sequence[:-1]
            painter.end()
            self.scene_px.setPixmap(self.pixmap())
            self.pixel_data = self.pixmap().toImage()
            return

        elif event.key() == QtCore.Qt.Key_Return:
            self.save_image(clip_only=True)
            self.window_destroy()

        elif event.key() == QtCore.Qt.Key_Escape:
            self.window_destroy()

        elif 10 <= event.nativeScanCode() <= 16:
            for key in self.toolkit.switches:
                if event.nativeScanCode() == key[1] + 10:
                    self.toolkit.tool_sel(key[0])
                    return

        elif event.nativeScanCode() == 28:  # "T" key
            if self.toolkit.isVisible():
                self.toolkit.hide()
                self.toolkit.tools_config.hide()
            else:
                self.toolkit.show()

        elif event.nativeScanCode() == 39:  # "S" key
            self.save_image()

        elif event.nativeScanCode() == 38:  # "A" key
            cur_pos = QtGui.QCursor.pos()
            cur_window = []
            for window in self.active_windows:
                x, y = window.x, window.y
                w, h = x + window.width - 2, y + window.height - 2
                # match window cords to mouse pointer
                if x <= cur_pos.x() <= w and y <= cur_pos.y() <= h:
                    cur_window = [x, y, w, h]

            try:
                x, y, w, h = cur_window
            except ValueError:
                return
            self.cords = QtCore.QRect(QtCore.QPoint(x, y), QtCore.QPoint(w, h))
            self.scene_sel.setRect(x + 0.4, y + 0.4, w - x, h - y)
        elif event.nativeScanCode() == 52:  # "Z"
            if self.view.isVisible():
                self.pixel_info.hide()
                self.view.hide()
            else:
                self.pixel_info.show()
                self.view.show()

        elif event.nativeScanCode() == 54:  # "C"
            data = self.pixel_info_label.text()
            if not data:
                return
            data = data.split()[0]
            self.parent.app.clipboard().setText(data)

        self.update()
コード例 #45
0
    def paintEvent(self, event):
        painter = QPainter()
        painter.begin(self)
        painter.setRenderHint(painter.Antialiasing)
        font = painter.font()
        font.setBold(True)
        painter.setFont(font)

        x = self.rect().x()
        y = self.rect().y()
        w = self.rect().width() - 1
        h = self.rect().height() - 1
        r = 8

        # draw a rounded style
        if self._rolloutStyle == 2:
            # draw the text
            painter.drawText(x + 33, y + 3, w, 16, Qt.AlignLeft | Qt.AlignTop,
                             self.title())

            # draw the triangle
            self.__drawTriangle(painter, x, y)

            # draw the borders
            pen = QPen(self.palette().color(QPalette.Light))
            pen.setWidthF(0.6)
            painter.setPen(pen)

            painter.drawRoundedRect(x + 1, y + 1, w - 1, h - 1, r, r)

            pen.setColor(self.palette().color(QPalette.Shadow))
            painter.setPen(pen)

            painter.drawRoundedRect(x, y, w - 1, h - 1, r, r)

        # draw a square style
        if self._rolloutStyle == 3:
            # draw the text
            painter.drawText(x + 33, y + 3, w, 16, Qt.AlignLeft | Qt.AlignTop,
                             self.title())

            self.__drawTriangle(painter, x, y)

            # draw the borders
            pen = QPen(self.palette().color(QPalette.Light))
            pen.setWidthF(0.6)
            painter.setPen(pen)

            painter.drawRect(x + 1, y + 1, w - 1, h - 1)

            pen.setColor(self.palette().color(QPalette.Shadow))
            painter.setPen(pen)

            painter.drawRect(x, y, w - 1, h - 1)

        # draw a Maya style
        if self._rolloutStyle == 4:
            # draw the text
            painter.drawText(x + 33, y + 3, w, 16, Qt.AlignLeft | Qt.AlignTop,
                             self.title())

            painter.setRenderHint(QPainter.Antialiasing, False)

            self.__drawTriangle(painter, x, y)

            # draw the borders - top
            headerHeight = 20

            headerRect = QRect(x + 1, y + 1, w - 1, headerHeight)
            headerRectShadow = QRect(x - 1, y - 1, w + 1, headerHeight + 2)

            # Highlight
            pen = QPen(self.palette().color(QPalette.Light))
            pen.setWidthF(0.4)
            painter.setPen(pen)

            painter.drawRect(headerRect)
            painter.fillRect(headerRect, QColor(255, 255, 255, 18))

            # Shadow
            pen.setColor(self.palette().color(QPalette.Dark))
            painter.setPen(pen)
            painter.drawRect(headerRectShadow)

            if not self.isCollapsed():
                # draw the lover border
                pen = QPen(self.palette().color(QPalette.Dark))
                pen.setWidthF(0.8)
                painter.setPen(pen)

                offSet = headerHeight + 3
                bodyRect = QRect(x, y + offSet, w, h - offSet)
                bodyRectShadow = QRect(x + 1, y + offSet, w + 1,
                                       h - offSet + 1)
                painter.drawRect(bodyRect)

                pen.setColor(self.palette().color(QPalette.Light))
                pen.setWidthF(0.4)
                painter.setPen(pen)

                painter.drawRect(bodyRectShadow)

        # draw a boxed style
        elif self._rolloutStyle == 1:
            if self.isCollapsed():
                arect = QRect(x + 1, y + 9, w - 1, 4)
                brect = QRect(x, y + 8, w - 1, 4)
                text = '+'
            else:
                arect = QRect(x + 1, y + 9, w - 1, h - 9)
                brect = QRect(x, y + 8, w - 1, h - 9)
                text = '-'

            # draw the borders
            pen = QPen(self.palette().color(QPalette.Light))
            pen.setWidthF(0.6)
            painter.setPen(pen)

            painter.drawRect(arect)

            pen.setColor(self.palette().color(QPalette.Shadow))
            painter.setPen(pen)

            painter.drawRect(brect)

            painter.setRenderHint(painter.Antialiasing, False)
            painter.setBrush(self.palette().color(QPalette.Window).darker(120))
            painter.drawRect(x + 10, y + 1, w - 20, 16)
            painter.drawText(x + 16, y + 1, w - 32, 16,
                             Qt.AlignLeft | Qt.AlignVCenter, text)
            painter.drawText(x + 10, y + 1, w - 20, 16, Qt.AlignCenter,
                             self.title())

        if self.dragDropMode():
            rect = self.dragDropRect()

            # draw the lines
            l = rect.left()
            r = rect.right()
            cy = rect.center().y()

            for y in (cy - 3, cy, cy + 3):
                painter.drawLine(l, y, r, y)

        painter.end()
コード例 #46
0
    def createCurveIcons(self):
        pix = QPixmap(self.m_iconSize)
        painter = QPainter()

        gradient = QLinearGradient(0, 0, 0, self.m_iconSize.height())
        gradient.setColorAt(0.0, QColor(240, 240, 240))
        gradient.setColorAt(1.0, QColor(224, 224, 224))

        brush = QBrush(gradient)

        # The original C++ code uses undocumented calls to get the names of the
        # different curve types.  We do the Python equivalant (but without
        # cheating).
        curve_types = [
            (n, c) for n, c in QEasingCurve.__dict__.items()
            if isinstance(c, QEasingCurve.Type) and c != QEasingCurve.Custom
        ]
        curve_types.sort(key=lambda ct: ct[1])

        painter.begin(pix)

        for curve_name, curve_type in curve_types:
            painter.fillRect(QRect(QPoint(0, 0), self.m_iconSize), brush)

            curve = QEasingCurve(curve_type)

            if curve_type == QEasingCurve.BezierSpline:
                curve.addCubicBezierSegment(QPointF(0.4,
                                                    0.1), QPointF(0.6, 0.9),
                                            QPointF(1.0, 1.0))
            elif curve_type == QEasingCurve.TCBSpline:
                curve.addTCBSegment(QPointF(0.0, 0.0), 0, 0, 0)
                curve.addTCBSegment(QPointF(0.3, 0.4), 0.2, 1, -0.2)
                curve.addTCBSegment(QPointF(0.7, 0.6), -0.2, 1, 0.2)
                curve.addTCBSegment(QPointF(1.0, 1.0), 0, 0, 0)

            painter.setPen(QColor(0, 0, 255, 64))
            xAxis = self.m_iconSize.height() / 1.5
            yAxis = self.m_iconSize.width() / 3.0
            painter.drawLine(0, xAxis, self.m_iconSize.width(), xAxis)
            painter.drawLine(yAxis, 0, yAxis, self.m_iconSize.height())

            curveScale = self.m_iconSize.height() / 2.0

            painter.setPen(Qt.NoPen)

            # Start point.
            painter.setBrush(Qt.red)
            start = QPoint(yAxis,
                           xAxis - curveScale * curve.valueForProgress(0))
            painter.drawRect(start.x() - 1, start.y() - 1, 3, 3)

            # End point.
            painter.setBrush(Qt.blue)
            end = QPoint(yAxis + curveScale,
                         xAxis - curveScale * curve.valueForProgress(1))
            painter.drawRect(end.x() - 1, end.y() - 1, 3, 3)

            curvePath = QPainterPath()
            curvePath.moveTo(QPointF(start))
            t = 0.0
            while t <= 1.0:
                to = QPointF(yAxis + curveScale * t,
                             xAxis - curveScale * curve.valueForProgress(t))
                curvePath.lineTo(to)
                t += 1.0 / curveScale

            painter.setRenderHint(QPainter.Antialiasing, True)
            painter.strokePath(curvePath, QColor(32, 32, 32))
            painter.setRenderHint(QPainter.Antialiasing, False)

            item = QListWidgetItem()
            item.setIcon(QIcon(pix))
            item.setText(curve_name)
            self.m_ui.easingCurvePicker.addItem(item)

        painter.end()
コード例 #47
0
ファイル: HUD.py プロジェクト: wangyeee/MiniGCS
    def paintEvent(self, event):
        unused(event)
        if self.isVisible():

            # Read out most important values to limit hash table lookups
            # Low-pass roll, pitch and yaw
            self.rollLP = self.roll#rollLP * 0.2f + 0.8f * roll
            self.pitchLP = self.pitch#pitchLP * 0.2f + 0.8f * pitch
            self.yawLP = self.yaw if isinf(self.yaw) == False and isnan(self.yaw) == False else self.yawLP#yawLP * 0.2f + 0.8f * yaw

            # Translate for yaw
            maxYawTrans = 60.0

            newYawDiff = self.yawDiff
            if isinf(newYawDiff):
                newYawDiff = self.yawDiff
            if newYawDiff > M_PI:
                newYawDiff = newYawDiff - M_PI

            if newYawDiff < -M_PI:
                newYawDiff = newYawDiff + M_PI

            newYawDiff = self.yawDiff * 0.8 + newYawDiff * 0.2

            self.yawDiff = newYawDiff

            self.yawInt += newYawDiff

            if self.yawInt > M_PI:
                self.yawInt = M_PI
            if self.yawInt < -M_PI:
                self.yawInt = -M_PI

            yawTrans = self.yawInt * maxYawTrans
            self.yawInt *= 0.6

            if (yawTrans < 5.0) and (yawTrans > -5.0):
                yawTrans = 0

            # Negate to correct direction
            yawTrans = -yawTrans
            yawTrans = 0
            #qDebug() << "yaw translation" << yawTrans << "integral" << yawInt << "difference" << yawDiff << "yaw" << yaw

            # And if either video or the data stream is enabled, draw the next frame.
            if self.videoEnabled:
                self.xImageFactor = self.width() / float(self.glImage.width())
                self.yImageFactor = self.height() / float(self.glImage.height())

            painter = QPainter()
            painter.begin(self)
            painter.setRenderHint(QPainter.Antialiasing, True)
            painter.setRenderHint(QPainter.HighQualityAntialiasing, True)
            pmap = QPixmap.fromImage(self.glImage).scaledToWidth(self.width())
            painter.drawPixmap(0, (self.height() - pmap.height()) / 2, pmap)

            # END OF OPENGL PAINTING

            if self.HUDInstrumentsEnabled:
                #glEnable(GL_MULTISAMPLE)
                # QT PAINTING
                #makeCurrent()

                painter.translate((self.vwidth/2.0+self.xCenterOffset)*self.scalingFactor, (self.vheight/2.0+self.yCenterOffset)*self.scalingFactor)
                # COORDINATE FRAME IS NOW (0,0) at CENTER OF WIDGET
                # Draw all fixed indicators
                # BATTERY
                self.paintText(self.fuelStatus, self.fuelColor, 6.0, (-self.vwidth/2.0) + 10, -self.vheight/2.0 + 6, painter)
                # Waypoint
                self.paintText(self.waypointName, self.defaultColor, 6.0, (-self.vwidth/3.0) + 10, +self.vheight/3.0 + 15, painter)

                linePen = QPen(Qt.SolidLine)
                linePen.setWidth(self.refLineWidthToPen(1.0))
                linePen.setColor(self.defaultColor)
                painter.setBrush(Qt.NoBrush)
                painter.setPen(linePen)

                # YAW INDICATOR
                #
                #      .
                #    .   .
                #   .......
                #
                _yawIndicatorWidth = 12.0
                _yawIndicatorY = self.vheight/2.0 - 15.0
                yawIndicator = QPolygon(4)
                yawIndicator.setPoint(0, QPoint(self.refToScreenX(0.0), self.refToScreenY(_yawIndicatorY)))
                yawIndicator.setPoint(1, QPoint(self.refToScreenX(_yawIndicatorWidth/2.0), self.refToScreenY(_yawIndicatorY+_yawIndicatorWidth)))
                yawIndicator.setPoint(2, QPoint(self.refToScreenX(-_yawIndicatorWidth/2.0), self.refToScreenY(_yawIndicatorY+_yawIndicatorWidth)))
                yawIndicator.setPoint(3, QPoint(self.refToScreenX(0.0), self.refToScreenY(_yawIndicatorY)))
                painter.drawPolyline(yawIndicator)
                painter.setPen(linePen)
                # CENTER

                # HEADING INDICATOR
                #
                #    __      __
                #       \/\/
                #
                _hIndicatorWidth = 20.0
                _hIndicatorY = -25.0
                _hIndicatorYLow = _hIndicatorY + _hIndicatorWidth / 6.0
                _hIndicatorSegmentWidth = _hIndicatorWidth / 7.0
                hIndicator = QPolygon(7)
                hIndicator.setPoint(0, QPoint(self.refToScreenX(0.0-_hIndicatorWidth/2.0), self.refToScreenY(_hIndicatorY)))
                hIndicator.setPoint(1, QPoint(self.refToScreenX(0.0-_hIndicatorWidth/2.0+_hIndicatorSegmentWidth*1.75), self.refToScreenY(_hIndicatorY)))
                hIndicator.setPoint(2, QPoint(self.refToScreenX(0.0-_hIndicatorSegmentWidth*1.0), self.refToScreenY(_hIndicatorYLow)))
                hIndicator.setPoint(3, QPoint(self.refToScreenX(0.0), self.refToScreenY(_hIndicatorY)))
                hIndicator.setPoint(4, QPoint(self.refToScreenX(0.0+_hIndicatorSegmentWidth*1.0), self.refToScreenY(_hIndicatorYLow)))
                hIndicator.setPoint(5, QPoint(self.refToScreenX(0.0+_hIndicatorWidth/2.0-_hIndicatorSegmentWidth*1.75), self.refToScreenY(_hIndicatorY)))
                hIndicator.setPoint(6, QPoint(self.refToScreenX(0.0+_hIndicatorWidth/2.0), self.refToScreenY(_hIndicatorY)))
                painter.drawPolyline(hIndicator)

                # SETPOINT
                _centerWidth = 8.0
                painter.drawEllipse(
                    QPointF(self.refToScreenX(min(10.0, self.desiredRoll * 10.0)),
                            self.refToScreenY(min(10.0, self.desiredPitch * 10.0))),
                    self.refToScreenX(_centerWidth/2.0), self.refToScreenX(_centerWidth/2.0))

                _centerCrossWidth = 20.0
                # left
                painter.drawLine(QPointF(self.refToScreenX(-_centerWidth / 2.0), self.refToScreenY(0.0)),
                                 QPointF(self.refToScreenX(-_centerCrossWidth / 2.0), self.refToScreenY(0.0)))
                # right
                painter.drawLine(QPointF(self.refToScreenX(_centerWidth / 2.0), self.refToScreenY(0.0)),
                                 QPointF(self.refToScreenX(_centerCrossWidth / 2.0), self.refToScreenY(0.0)))
                # top
                painter.drawLine(QPointF(self.refToScreenX(0.0), self.refToScreenY(-_centerWidth / 2.0)),
                                 QPointF(self.refToScreenX(0.0), self.refToScreenY(-_centerCrossWidth / 2.0)))

                # COMPASS
                _compassY = -self.vheight/2.0 + 6.0
                compassRect = QRectF(QPointF(self.refToScreenX(-12.0), self.refToScreenY(_compassY)),
                                     QSizeF(self.refToScreenX(24.0), self.refToScreenY(12.0)))
                painter.setBrush(Qt.NoBrush)
                painter.setPen(linePen)
                painter.drawRoundedRect(compassRect, 3, 3)

                # YAW is in compass-human readable format, so 0 .. 360 deg.
                _yawDeg = (self.yawLP / M_PI) * 180.0
                if _yawDeg < 0:
                    _yawDeg += 360
                if _yawDeg > 360:
                    _yawDeg -= 360
                # final safeguard for really stupid systems
                _yawAngle = '{:3d}'.format(int(_yawDeg) % 360)
                self.paintText(_yawAngle, self.defaultColor, 8.5, -9.8, _compassY + 1.7, painter)

                painter.setBrush(Qt.NoBrush)
                painter.setPen(linePen)

                # CHANGE RATE STRIPS
                self.drawChangeRateStrip(-95.0, -60.0, 40.0, -10.0, 10.0, self.zSpeed, painter)

                # CHANGE RATE STRIPS
                self.drawChangeRateStrip(95.0, -60.0, 40.0, -10.0, 10.0, self.totalAcc, painter,True)

                # GAUGES

                # Left altitude gauge
                _gaugeAltitude = self.alt if self.alt != 0 else -self.zPos

                painter.setBrush(Qt.NoBrush)
                painter.setPen(linePen)

                self.drawChangeIndicatorGauge(-self.vGaugeSpacing, 35.0, 15.0, 10.0, _gaugeAltitude, self.defaultColor, painter, False)
                self.paintText('alt m', self.defaultColor, 5.5, -73.0, 50, painter)

                # Right speed gauge
                self.drawChangeIndicatorGauge(self.vGaugeSpacing, 35.0, 15.0, 10.0, self.totalSpeed, self.defaultColor, painter, False)
                self.paintText('v m/s', self.defaultColor, 5.5, 55.0, 50, painter)

                # Waypoint name
                if self.waypointName != '':
                    self.paintText(self.waypointName, self.defaultColor, 2.0, (-self.vwidth/3.0) + 10, +self.vheight/3.0 + 15, painter)

                # MOVING PARTS
                painter.translate(self.refToScreenX(yawTrans), 0)
                attColor = painter.pen().color()

                # Draw multi-component attitude
                for key in self.attitudes:
                    att = self.attitudes[key]
                    attColor = attColor.darker(200)
                    painter.setPen(attColor)
                    # Rotate view and draw all roll-dependent indicators
                    painter.rotate((att.x()/M_PI)* -180.0)
                    painter.translate(0, (-att.y()/M_PI)* -180.0 * self.refToScreenY(1.8))
                    #qDebug() << "ROLL" << roll << "PITCH" << pitch << "YAW DIFF" << valuesDot.value("roll", 0.0)
                    # PITCH
                    self.paintPitchLines(att.y(), painter)
                    painter.translate(0, -(-att.y()/M_PI)* -180.0 * self.refToScreenY(1.8))
                    painter.rotate(-(att.x()/M_PI)* -180.0)
            painter.end()
コード例 #48
0
ファイル: AnalogClock.py プロジェクト: Joiner12/Python_MS
    def paintEvent(self, event):
        side = min(self.width(), self.height())  # 最小边
        time = QTime.currentTime()  # 获取系统当前时间

        painter = QPainter(self)
        # 抗锯齿
        painter.setRenderHint(QPainter.Antialiasing, True)
        painter.setRenderHint(QPainter.HighQualityAntialiasing, True)
        painter.setRenderHint(QPainter.SmoothPixmapTransform, True)

        painter.translate(self.width() / 2, self.height() / 2)  # 坐标偏置

        # painter.setPen(Qt.NoPen)
        painter.setBrush(self.hourColor)

        # 表盘主背景
        self.target = QPixmap(self.size())
        self.target.fill(Qt.transparent)

        imgB = self.imgFile
        p = QPixmap(imgB).scaled(200, 200, Qt.KeepAspectRatioByExpanding,
                                 Qt.SmoothTransformation)

        path = QPainterPath()
        path.addRoundedRect(-100, -100, 200, 200, 50, 50)
        painter.setClipPath(path)
        painter.drawPixmap(-100, -100, p)

        # 表盘中心图标
        imgM = self.imgFile_M
        pm = QPixmap(imgM).scaled(50, 50, Qt.KeepAspectRatioByExpanding,
                                  Qt.SmoothTransformation)
        painter.drawPixmap(-25, -60, pm)
        # 整点刻度
        painter.setPen(self.hourColor)
        for i in range(12):
            painter.drawLine(QPointF(85, 0), QPointF(96, 0))
            # painter.drawLine(88, 0, 96, 0)
            painter.rotate(30.0)

        painter.setPen(self.minuteColor)
        for j in range(60):  # 小刻度
            if (j % 5) != 0:
                painter.drawLine(QPointF(85, 0), QPointF(92, 0))
                # painter.drawLine(92, 0, 96, 0)
            painter.rotate(6.0)

        painter.setPen(Qt.NoPen)
        painter.setBrush(self.hourColor)

        painter.save()
        painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0)))
        painter.drawConvexPolygon(self.hourHand)  # 画三角形
        painter.restore()

        painter.setPen(Qt.NoPen)
        painter.setBrush(self.minuteColor)
        painter.save()

        painter.rotate(6.0 * (time.minute() + time.second() / 60.0))
        painter.drawConvexPolygon(self.minuteHand)
        painter.restore()

        painter.setPen(QColor(0, 0, 0))
        painter.drawEllipse(-5, -5, 10, 10)  # 画圆。参数是外接矩形左上点和长宽
コード例 #49
0
class Image(QLabel):
    classifiedMLP = pyqtSignal(int)
    classifiedCNN = pyqtSignal(int)
    clear = pyqtSignal()

    def __init__(self, *args):
        super().__init__(*args)
        self.pressed = False
        self.setFixedSize(200, 200)
        self.setStyleSheet('border: 3px solid grey;')

        self.classifyTimer = QTimer()
        self.classifyTimer.timeout.connect(self.classify)

        # загрузка весов нейронной сети MLP
        data = scipy.io.loadmat('weights.mat')
        self.Theta1 = np.matrix(data['Theta1'])
        self.Theta2 = np.matrix(data['Theta2'])

        # инициализация модели CNN
        jsonFile = open('model.json', 'r')
        loadedModelJson = jsonFile.read()
        jsonFile.close()
        self.cnnModel = model_from_json(loadedModelJson)
        self.cnnModel.load_weights('model.h5')
        self.cnnModel.compile(loss="categorical_crossentropy",
                              optimizer=Adam(),
                              metrics=["accuracy"])

    def mousePressEvent(self, event):
        self.pressed = True
        self.xPrev = event.x()
        self.yPrev = event.y()

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

    def mouseMoveEvent(self, event):
        if self.pressed:
            color = QColor(0, 0, 0)
            self.painter.setBrush(color)
            pen = QPen(color, 15)
            pen.setCapStyle(QtCore.Qt.RoundCap)
            self.painter.setPen(pen)

            self.painter.drawLine(self.xPrev, self.yPrev, event.x(), event.y())

            self.xPrev = event.x()
            self.yPrev = event.y()
            self.repaint()

    def mouseReleaseEvent(self, event):
        self.pressed = False
        self.painter.end()

        # запуск кода классификации картинки
        self.classifyTimer.start(1000)
        QTimer.singleShot(2000, self.clearImage)

    def classify(self):
        self.classifyTimer.stop()

        # предсказание с помощью MLP
        self.classifiedMLP.emit(self.classifyMLP())

        # предсказание с помощью свёрточной сети Keras
        self.classifiedCNN.emit(self.classifyCNN())

    def classifyMLP(self):
        # подготовка картинки к классификации
        small = self.pixmap().toImage().scaled(20, 20).convertToFormat(
            QImage.Format_Grayscale8)
        s = small.bits().asstring(20 * 20)
        sample = np.fromstring(s, dtype=np.uint8)
        sample = sample.reshape((20, 20)).T.reshape((1, 400))
        sample = (255 - sample) / 243.0

        # предсказание с помощью классификатора
        return predict(self.Theta1, self.Theta2, sample)[0] % 10

    def classifyCNN(self):
        # подготовка картинки к классификации
        small = self.pixmap().toImage().scaled(28, 28).convertToFormat(
            QImage.Format_Grayscale8)
        s = small.bits().asstring(28 * 28)
        sample = np.fromstring(s, dtype=np.uint8)
        sample = (255 - sample) / 255
        sample = sample.reshape((1, 1, 28, 28))

        # предсказание с помощью классификатора
        return np.argmax(self.cnnModel.predict(sample))


    def clearImage(self):
        self.painter.begin(self.pixmap())
        self.painter.eraseRect(self.rect())
        self.painter.end()
        self.repaint()
        self.clear.emit()
コード例 #50
0
 def paintEvent(self, event: QPaintEvent):
     painter = QPainter(self)
     painter.setRenderHint(QPainter.Antialiasing)
     painter.setBrush(QColor(0, 0, 0, 180))
     painter.setPen(Qt.NoPen)
     painter.drawRoundedRect(self.rect(), 10, 10)
コード例 #51
0
    def paintEvent(self, event):
        qp = QPainter(self)

        qp.setRenderHint(QPainter.Antialiasing)           # <- Set anti-aliasing  See https://wiki.python.org/moin/PyQt/Painting%20and%20clipping%20demonstration

        qp.setPen(QPen(Qt.black, 5, Qt.SolidLine))
        qp.setBrush(QBrush(Qt.red, Qt.SolidPattern))

        qp.drawRect(10, 10, 180, 50)   # x_start, y_start, x_length, y_length

        qp.setBrush(QBrush(QColor("#fcaf3e"), Qt.DiagCrossPattern))

        qp.drawRect(210, 10, 180, 50)

        qp.setBrush(QBrush(Qt.red, Qt.Dense1Pattern))

        qp.drawRect(410, 10, 180, 50)

        qp.setBrush(QBrush(Qt.red, Qt.HorPattern))

        qp.drawRect(610, 10, 180, 50)

        qp.setBrush(QBrush(Qt.red, Qt.VerPattern))

        qp.drawRect(810, 10, 180, 50)

        qp.setBrush(QBrush(Qt.red, Qt.BDiagPattern))

        qp.drawRect(1010, 10, 180, 50)
コード例 #52
0
    def paintEvent(self, event):
        # Init painter.
        painter = QPainter(self)
        painter.save()

        # Draw background.
        painter.setBrush(self.background_color)
        painter.drawRect(0, 0, self.rect().width(), self.rect().height())

        # Get start/last render index.
        start_page_index = int(self.scroll_offset * 1.0 / self.scale /
                               self.page_height)
        last_page_index = int((self.scroll_offset + self.rect().height()) *
                              1.0 / self.scale / self.page_height)

        # Translate painter at y coordinate.
        translate_y = (start_page_index * self.scale *
                       self.page_height) - self.scroll_offset
        painter.translate(0, translate_y)

        # Render pages in visible area.
        for index in list(range(start_page_index, last_page_index + 1)):
            if index < self.page_total_number:
                # Get page image.
                page = self.document[index]
                trans = fitz.Matrix(self.scale, self.scale)
                pixmap = page.getPixmap(matrix=trans, alpha=False)
                img = QImage(pixmap.samples, pixmap.width, pixmap.height,
                             pixmap.stride, QImage.Format_RGB888)
                qpixmap = QPixmap.fromImage(img)

                # Init render rect.
                render_width = self.page_width * self.scale
                render_height = self.page_height * self.scale
                render_x = (self.rect().width() - render_width) / 2
                render_y = (index -
                            start_page_index) * self.scale * self.page_height

                # Add padding between pages.
                if (index - start_page_index) > 0:
                    painter.translate(0, self.page_padding)

                # Draw page image.
                painter.drawPixmap(
                    QRect(render_x, render_y, render_width, render_height),
                    qpixmap)

        painter.restore()

        # Render current page.
        painter.setFont(self.font)
        painter.setPen(self.page_annotate_color)
        painter.drawText(
            QRect(
                self.rect().x(),
                self.rect().y() + self.rect().height() -
                self.page_annotate_height - self.page_annotate_padding_bottom,
                self.rect().width() - self.page_annotate_padding_right,
                self.page_annotate_height), Qt.AlignRight,
            "{0}% ({1}/{2})".format(
                int((start_page_index + 1) * 100 / self.page_total_number),
                start_page_index + 1, self.page_total_number))
コード例 #53
0
ファイル: image.py プロジェクト: insad/DigitalPalette
    def paintEvent(self, event):
        if not self._image3c.img_data:
            self._loading_bar.hide()
            self._ico_label.hide()
            self._tip_label.show()
            self.overlabel_display.hide()

            painter = QPainter()
            painter.begin(self)
            painter.setRenderHint(QPainter.Antialiasing, True)
            painter.setRenderHint(QPainter.TextAntialiasing, True)
            painter.setRenderHint(QPainter.SmoothPixmapTransform, True)

            painter.setPen(QPen(Qt.black, Qt.PenStyle(Qt.DashLine), 3))
            painter.setBrush(Qt.white)
            self._tip_box = (self.width() * 0.2, self.height() * 0.2,
                             self.width() * 0.6, self.height() * 0.6)
            radius = min(self.width() * 0.1, self.height() * 0.1)
            painter.drawRoundedRect(*self._tip_box, radius, radius)

            painter.end()

            self._tip_label.setGeometry(QRect(*self._tip_box))

            self._tip_label.setText(self._action_descs[0])
            self._tip_label.setAlignment(Qt.AlignCenter)

        elif self._args.sys_category * 10 + self._args.sys_channel not in self._categories:
            self._loading_bar.show()
            self._ico_label.show()
            self._tip_label.show()
            self.overlabel_display.hide()

            bar_wid = self.width() * 0.8
            bar_hig = self.height() * 0.1

            self._loading_bar.setGeometry((self.width() - bar_wid) / 2,
                                          self.height() - bar_hig * 1.2,
                                          bar_wid, bar_hig)

            resized_img = self._ico.scaled(self.width() * 0.8,
                                           self.height() * 0.8,
                                           Qt.KeepAspectRatio)
            img_wid = resized_img.size().width()
            img_hig = resized_img.size().height()

            self._ico_label.setPixmap(QPixmap.fromImage(resized_img))
            self._ico_label.setGeometry((self.width() - img_wid) / 2,
                                        bar_hig * 0.2, img_wid, img_hig)

            self._tip_label.setGeometry((self.width() - bar_wid) / 2,
                                        self.height() - bar_hig * 2.2, bar_wid,
                                        bar_hig)

        else:
            self._loading_bar.hide()
            self._ico_label.hide()
            self._tip_label.hide()
            self.overlabel_display.show()

            if not self._image3c.display:
                self._image3c.load_image(self._args.sys_category,
                                         self._args.sys_channel)
                self._resizing_image = True

            if self._image3c.display:
                if not self._move_pos:
                    self.home()

                self._move_pos[0] = self.width() - 2 if self._move_pos[
                    0] > self.width() - 2 else self._move_pos[0]
                self._move_pos[0] = 2 - self._move_pos[2] if self._move_pos[
                    0] < 2 - self._move_pos[2] else self._move_pos[0]
                self._move_pos[1] = self.height() - 2 if self._move_pos[
                    1] > self.height() - 2 else self._move_pos[1]
                self._move_pos[1] = 2 - self._move_pos[3] if self._move_pos[
                    1] < 2 - self._move_pos[3] else self._move_pos[1]

                # aspect ratio mode: IgnoreAspectRatio, KeepAspectRatio and KeepAspectRatioByExpanding.
                if self._resizing_image:
                    resized_img = self._image3c.display.scaled(
                        self._move_pos[2], self._move_pos[3],
                        Qt.IgnoreAspectRatio)
                    self.overlabel_display.setPixmap(
                        QPixmap.fromImage(resized_img))
                    self._resizing_image = False

                self.overlabel_display.setGeometry(*self._move_pos)

                if isinstance(self.overlabel_display.croping, tuple):
                    painter = QPainter()
                    painter.begin(self)
                    painter.setRenderHint(QPainter.Antialiasing, True)
                    painter.setRenderHint(QPainter.TextAntialiasing, True)
                    painter.setRenderHint(QPainter.SmoothPixmapTransform, True)

                    painter.setPen(
                        QPen(QColor(*self._args.positive_color),
                             self._args.positive_wid))

                    painter.drawLine(
                        QPoint(
                            self.overlabel_display.croping[0] *
                            self.overlabel_display.width() +
                            self.overlabel_display.x(), 0),
                        QPoint(
                            self.overlabel_display.croping[0] *
                            self.overlabel_display.width() +
                            self.overlabel_display.x(), self.height()))
                    painter.drawLine(
                        QPoint(
                            0, self.overlabel_display.croping[1] *
                            self.overlabel_display.height() +
                            self.overlabel_display.y()),
                        QPoint(
                            self.width(), self.overlabel_display.croping[1] *
                            self.overlabel_display.height() +
                            self.overlabel_display.y()))

                    painter.drawLine(
                        QPoint(
                            self.overlabel_display.croping[2] *
                            self.overlabel_display.width() +
                            self.overlabel_display.x(), 0),
                        QPoint(
                            self.overlabel_display.croping[2] *
                            self.overlabel_display.width() +
                            self.overlabel_display.x(), self.height()))
                    painter.drawLine(
                        QPoint(
                            0, self.overlabel_display.croping[3] *
                            self.overlabel_display.height() +
                            self.overlabel_display.y()),
                        QPoint(
                            self.width(), self.overlabel_display.croping[3] *
                            self.overlabel_display.height() +
                            self.overlabel_display.y()))

                    painter.end()

                    self.ps_status_changed.emit(
                        (self._image3c.rgb_data.shape[1],
                         self._image3c.rgb_data.shape[0], "{:.1f}".format(
                             self.overlabel_display.croping[2] * 100),
                         "{:.1f}".format(self.overlabel_display.croping[3] *
                                         100)))

                elif isinstance(self.overlabel_display.locating, tuple):
                    painter = QPainter()
                    painter.begin(self)
                    painter.setRenderHint(QPainter.Antialiasing, True)
                    painter.setRenderHint(QPainter.TextAntialiasing, True)
                    painter.setRenderHint(QPainter.SmoothPixmapTransform, True)

                    painter.setPen(
                        QPen(QColor(*self._args.positive_color),
                             self._args.positive_wid))

                    painter.drawLine(
                        QPoint(
                            self.overlabel_display.locating[0] *
                            self.overlabel_display.width() +
                            self.overlabel_display.x(), 0),
                        QPoint(
                            self.overlabel_display.locating[0] *
                            self.overlabel_display.width() +
                            self.overlabel_display.x(), self.height()))
                    painter.drawLine(
                        QPoint(
                            0, self.overlabel_display.locating[1] *
                            self.overlabel_display.height() +
                            self.overlabel_display.y()),
                        QPoint(
                            self.width(), self.overlabel_display.locating[1] *
                            self.overlabel_display.height() +
                            self.overlabel_display.y()))

                    painter.end()

                    self.ps_status_changed.emit(
                        (self._image3c.rgb_data.shape[1],
                         self._image3c.rgb_data.shape[0], "{:.1f}".format(
                             self.overlabel_display.locating[0] * 100),
                         "{:.1f}".format(self.overlabel_display.locating[1] *
                                         100)))

                elif self.overlabel_display.locations[
                        self._args.sys_activated_idx]:
                    self.ps_status_changed.emit(
                        (self._image3c.rgb_data.shape[1],
                         self._image3c.rgb_data.shape[0],
                         "{:.1f}".format(self.overlabel_display.locations[
                             self._args.sys_activated_idx][0] * 100),
                         "{:.1f}".format(self.overlabel_display.locations[
                             self._args.sys_activated_idx][1] * 100)))

                else:
                    self.ps_status_changed.emit(
                        (self._image3c.rgb_data.shape[1],
                         self._image3c.rgb_data.shape[0]))
コード例 #54
0
ファイル: image.py プロジェクト: insad/DigitalPalette
    def paintEvent(self, event):
        super().paintEvent(event)

        painter = QPainter()
        painter.begin(self)
        painter.setRenderHint(QPainter.Antialiasing, True)
        painter.setRenderHint(QPainter.TextAntialiasing, True)
        painter.setRenderHint(QPainter.SmoothPixmapTransform, True)

        idx_seq = list(range(5))
        idx_seq = idx_seq[self._args.sys_activated_idx +
                          1:] + idx_seq[:self._args.sys_activated_idx + 1]

        for idx in idx_seq:
            if self.locations[idx]:
                pt_xy = np.array((self.locations[idx][0] * self.width(),
                                  self.locations[idx][1] * self.height()))
                pt_box = get_outer_box(pt_xy, self._args.circle_dist)

                if idx == self._args.sys_activated_idx:
                    painter.setPen(
                        QPen(QColor(*self._args.positive_color),
                             self._args.positive_wid))

                else:
                    painter.setPen(
                        QPen(QColor(*self._args.negative_color),
                             self._args.negative_wid))

                painter.setBrush(QColor(*self._args.sys_color_set[idx].rgb))
                painter.drawEllipse(*pt_box)

        if isinstance(self.croping, tuple):
            painter.setPen(QPen(Qt.NoPen))
            painter.setBrush(QColor(255, 255, 255, 160))

            croping = self.sort_croping()
            croping = (int(self.width() * croping[0]),
                       int(self.height() * croping[1]),
                       int(self.width() * croping[2]),
                       int(self.height() * croping[3]))
            self.draw_rect(painter, 0, 0, croping[0], self.height())
            self.draw_rect(painter, croping[2], 0, self.width(), self.height())
            self.draw_rect(painter, croping[0], 0, croping[2], croping[1])
            self.draw_rect(painter, croping[0], croping[3], croping[2],
                           self.height())

            painter.setPen(
                QPen(QColor(*self._args.positive_color),
                     self._args.positive_wid))
            painter.setBrush(QBrush(Qt.NoBrush))

            if 0 <= self.croping[0] <= self.width():
                painter.drawLine(
                    QPoint(self.croping[0] * self.width(), 0),
                    QPoint(self.croping[0] * self.width(), self.height()))

            if 0 <= self.croping[1] <= self.height():
                painter.drawLine(
                    QPoint(0, self.croping[1] * self.height()),
                    QPoint(self.width(), self.croping[1] * self.height()))

            if 0 <= self.croping[2] <= self.width():
                painter.drawLine(
                    QPoint(self.croping[2] * self.width(), 0),
                    QPoint(self.croping[2] * self.width(), self.height()))

            if 0 <= self.croping[3] <= self.height():
                painter.drawLine(
                    QPoint(0, self.croping[3] * self.height()),
                    QPoint(self.width(), self.croping[3] * self.height()))

        elif isinstance(self.locating, tuple):
            painter.setPen(QPen(Qt.NoPen))
            painter.setBrush(QColor(255, 255, 255, 160))

            painter.drawRect(0, 0, self.width(), self.height())

            painter.setPen(
                QPen(QColor(*self._args.positive_color),
                     self._args.positive_wid))
            painter.setBrush(QBrush(Qt.NoBrush))

            if 0 <= self.locating[0] <= self.width():
                painter.drawLine(
                    QPoint(self.locating[0] * self.width(), 0),
                    QPoint(self.locating[0] * self.width(), self.height()))

            if 0 <= self.locating[1] <= self.height():
                painter.drawLine(
                    QPoint(0, self.locating[1] * self.height()),
                    QPoint(self.width(), self.locating[1] * self.height()))

        elif self.croping or self.locating:
            painter.setPen(QPen(Qt.NoPen))
            painter.setBrush(QColor(255, 255, 255, 160))

            painter.drawRect(0, 0, self.width(), self.height())

        painter.end()
コード例 #55
0
 def run(self):
     qp = QPainter()
     qp.begin(self)
     qp.setBrush(QColor(250, 218, 94))
     qp.drawEllipse(r(0, 700), r(0, 500), r(10, 400), r(10, 400))
     qp.end()
コード例 #56
0
ファイル: paint.py プロジェクト: ghyeon1946/Pyqt
 def clear_canvas(self):
     painter = QPainter(self.pixmap())
     painter.setBrush(QColor(self.backgroundcolor))
     painter.drawRect(-100, -100, self.size[0] + 100, self.size[1] + 100)
     painter.end()
コード例 #57
0
ファイル: panel_watchers.py プロジェクト: riusksk/Dwarf
    def __init__(self, parent=None):  # pylint: disable=too-many-statements
        super(WatchersPanel, self).__init__(parent=parent)
        self._app_window = parent

        if self._app_window.dwarf is None:
            print('Watcherpanel created before Dwarf exists')
            return

        self._uppercase_hex = True
        self.setAutoFillBackground(True)

        # connect to dwarf
        self._app_window.dwarf.onWatcherAdded.connect(self._on_watcher_added)
        self._app_window.dwarf.onWatcherRemoved.connect(
            self._on_watcher_removed)

        # setup our model
        self._watchers_model = QStandardItemModel(0, 5)
        self._watchers_model.setHeaderData(0, Qt.Horizontal, 'Address')
        self._watchers_model.setHeaderData(1, Qt.Horizontal, 'R')
        self._watchers_model.setHeaderData(1, Qt.Horizontal, Qt.AlignCenter,
                                           Qt.TextAlignmentRole)
        self._watchers_model.setHeaderData(2, Qt.Horizontal, 'W')
        self._watchers_model.setHeaderData(2, Qt.Horizontal, Qt.AlignCenter,
                                           Qt.TextAlignmentRole)
        self._watchers_model.setHeaderData(3, Qt.Horizontal, 'X')
        self._watchers_model.setHeaderData(3, Qt.Horizontal, Qt.AlignCenter,
                                           Qt.TextAlignmentRole)
        self._watchers_model.setHeaderData(4, Qt.Horizontal, 'S')
        self._watchers_model.setHeaderData(4, Qt.Horizontal, Qt.AlignCenter,
                                           Qt.TextAlignmentRole)

        # setup ui
        v_box = QVBoxLayout(self)
        v_box.setContentsMargins(0, 0, 0, 0)
        self.list_view = DwarfListView()
        self.list_view.setModel(self._watchers_model)
        self.list_view.header().setSectionResizeMode(0, QHeaderView.Stretch)
        self.list_view.header().setSectionResizeMode(
            1, QHeaderView.ResizeToContents | QHeaderView.Fixed)
        self.list_view.header().setSectionResizeMode(
            2, QHeaderView.ResizeToContents | QHeaderView.Fixed)
        self.list_view.header().setSectionResizeMode(
            3, QHeaderView.ResizeToContents | QHeaderView.Fixed)
        self.list_view.header().setSectionResizeMode(
            4, QHeaderView.ResizeToContents | QHeaderView.Fixed)
        self.list_view.header().setStretchLastSection(False)
        self.list_view.doubleClicked.connect(self._on_item_dblclick)
        self.list_view.setContextMenuPolicy(Qt.CustomContextMenu)
        self.list_view.customContextMenuRequested.connect(self._on_contextmenu)

        v_box.addWidget(self.list_view)
        #header = QHeaderView(Qt.Horizontal, self)

        h_box = QHBoxLayout()
        h_box.setContentsMargins(5, 2, 5, 5)
        icon = QIcon()
        icon.addPixmap(QPixmap(utils.resource_path('assets/icons/plus.svg')))
        btn1 = QPushButton(icon, '')
        btn1.setFixedSize(20, 20)
        btn1.clicked.connect(self._on_additem_clicked)
        btn2 = QPushButton(
            QIcon(QPixmap(utils.resource_path('assets/icons/dash.svg'))), '')
        btn2.setFixedSize(20, 20)
        btn2.clicked.connect(self.delete_items)
        btn3 = QPushButton(
            QIcon(QPixmap(utils.resource_path('assets/icons/trashcan.svg'))),
            '')
        btn3.setFixedSize(20, 20)
        btn3.clicked.connect(self.clear_list)
        h_box.addWidget(btn1)
        h_box.addWidget(btn2)
        h_box.addSpacerItem(
            QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Preferred))
        h_box.addWidget(btn3)
        # header.setLayout(h_box)
        # header.setFixedHeight(25)
        # v_box.addWidget(header)
        v_box.addLayout(h_box)

        # create a centered dot icon
        _section_width = self.list_view.header().sectionSize(2)
        self._new_pixmap = QPixmap(_section_width, 20)
        self._new_pixmap.fill(Qt.transparent)
        painter = QPainter(self._new_pixmap)
        rect = QRect((_section_width * 0.5), 0, 20, 20)
        painter.setBrush(QColor('#666'))
        painter.setPen(QColor('#666'))
        painter.drawEllipse(rect)
        self._dot_icon = QIcon(self._new_pixmap)

        # shortcuts
        shortcut_add = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_W),
                                 self._app_window, self._on_additem_clicked)
        shortcut_add.setAutoRepeat(False)

        self.setLayout(v_box)
コード例 #58
0
    def show_network(self, painter: QtGui.QPainter):
        painter.setRenderHints(QtGui.QPainter.Antialiasing)
        painter.setRenderHints(QtGui.QPainter.HighQualityAntialiasing)
        painter.setRenderHint(QtGui.QPainter.TextAntialiasing)
        painter.setRenderHint(QtGui.QPainter.SmoothPixmapTransform)
        vertical_space = 8
        radius = 8
        height = self.frameGeometry().height()
        width = self.frameGeometry().width()
        layer_nodes = self.snake.network.layer_nodes

        default_offset = 30
        h_offset = default_offset
        inputs = self.snake.vision_as_array
        out = self.snake.network.feed_forward(inputs)  # @TODO: shouldnt need this
        max_out = np.argmax(out)
        
        # Draw nodes
        for layer, num_nodes in enumerate(layer_nodes):
            v_offset = (height - ((2*radius + vertical_space) * num_nodes))/2
            activations = None
            if layer > 0:
                activations = self.snake.network.params['A' + str(layer)]

            for node in range(num_nodes):
                x_loc = h_offset
                y_loc = node * (radius*2 + vertical_space) + v_offset
                t = (layer, node)
                if t not in self.neuron_locations:
                    self.neuron_locations[t] = (x_loc, y_loc + radius)
                
                painter.setBrush(QtGui.QBrush(Qt.white, Qt.NoBrush))
                # Input layer
                if layer == 0:
                    # Is there a value being fed in
                    if inputs[node, 0] > 0:
                        painter.setBrush(QtGui.QBrush(Qt.green))
                    else:
                        painter.setBrush(QtGui.QBrush(Qt.white))
                # Hidden layers
                elif layer > 0 and layer < len(layer_nodes) - 1:
                    try:
                        saturation = max(min(activations[node, 0], 1.0), 0.0)
                    except:
                        print(self.snake.network.params)
                        import sys
                        sys.exit(-1)
                    painter.setBrush(QtGui.QBrush(QtGui.QColor.fromHslF(125/239, saturation, 120/240)))
                # Output layer
                elif layer == len(layer_nodes) - 1:
                    text = ('U', 'D', 'L', 'R')[node]
                    painter.drawText(h_offset + 30, node * (radius*2 + vertical_space) + v_offset + 1.5*radius, text)
                    if node == max_out:
                        painter.setBrush(QtGui.QBrush(Qt.green))
                    else:
                        painter.setBrush(QtGui.QBrush(Qt.white))

                painter.drawEllipse(x_loc, y_loc, radius*2, radius*2)
            h_offset += 150

        # Reset horizontal offset for the weights
        h_offset = default_offset

        # Draw weights
        # For each layer starting at 1
        for l in range(1, len(layer_nodes)):
            weights = self.snake.network.params['W' + str(l)]
            prev_nodes = weights.shape[1]
            curr_nodes = weights.shape[0]
            # For each node from the previous layer
            for prev_node in range(prev_nodes):
                # For all current nodes, check to see what the weights are
                for curr_node in range(curr_nodes):
                    # If there is a positive weight, make the line blue
                    if weights[curr_node, prev_node] > 0:
                        painter.setPen(QtGui.QPen(Qt.blue))
                    # If there is a negative (impeding) weight, make the line red
                    else:
                        painter.setPen(QtGui.QPen(Qt.red))
                    # Grab locations of the nodes
                    start = self.neuron_locations[(l-1, prev_node)]
                    end = self.neuron_locations[(l, curr_node)]
                    # Offset start[0] by diameter of circle so that the line starts on the right of the circle
                    painter.drawLine(start[0] + radius*2, start[1], end[0], end[1])
コード例 #59
0
 def paint(self, painter: QPainter, a, b):
     """Show particle on the screen"""
     painter.setPen(Qt.NoPen)
     painter.setBrush(QColor(255, 0, 255, 255))
     painter.drawEllipse(self.boundingRect())
コード例 #60
0
ファイル: textbutton.py プロジェクト: farisachugthai/qtcalc
    def createArrowBackground(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)
            normal1 = QColor(200, 170, 160, 50)
            normal2 = QColor(50, 10, 0, 50)

            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)

        painter.drawRect(0, 0, scaledRect.width(), scaledRect.height())

        xOff = scaledRect.width() / 2
        yOff = scaledRect.height() / 2
        sizex = 3.0 * transform.m11()
        sizey = 1.5 * transform.m22()
        if self.type == TextButton.UP:
            sizey *= -1
        path = QPainterPath()
        path.moveTo(xOff, yOff + (5 * sizey))
        path.lineTo(xOff - (4 * sizex), yOff - (3 * sizey))
        path.lineTo(xOff + (4 * sizex), yOff - (3 * sizey))
        path.lineTo(xOff, yOff + (5 * sizey))
        painter.drawPath(path)

        return image