Exemplo n.º 1
0
    def draw(self, qp):
        qp.setWindow(0, 0, self.width(), self.height())  # 设置窗口
        qp.setRenderHint(QPainter.SmoothPixmapTransform)
        # 画框架背景
        qp.setBrush(QColor('#cecece'))  # 框架背景色
        qp.setPen(Qt.NoPen)
        rect = QRect(0, 0, self.width(), self.height())
        qp.drawRect(rect)

        sw, sh = self.width(), self.height()  # 图像窗口宽高

        if not self.opened:
            qp.drawPixmap(sw / 2 - 100, sh / 2 - 100, 200, 200,
                          QPixmap('img/video.svg'))

        # 画图
        if self.opened and self.image is not None:
            ih, iw, _ = self.image.shape
            self.scale = sw / iw if sw / iw < sh / ih else sh / ih  # 缩放比例
            px = round((sw - iw * self.scale) / 2)
            py = round((sh - ih * self.scale) / 2)
            qimage = QImage(self.image.data, iw, ih, 3 * iw,
                            QImage.Format_RGB888)  # 转QImage
            qpixmap = QPixmap.fromImage(
                qimage.scaled(sw, sh, Qt.KeepAspectRatio))  # 转QPixmap
            pw, ph = qpixmap.width(), qpixmap.height()  # 缩放后的QPixmap大小
            qp.drawPixmap(px, py, qpixmap)

            font = QFont()
            font.setFamily('Microsoft YaHei')
            if self.fps > 0:
                font.setPointSize(14)
                qp.setFont(font)
                pen = QPen()
                pen.setColor(Qt.white)
                qp.setPen(pen)
                qp.drawText(sw - px - 130, py + 40,
                            'FPS: ' + str(round(self.fps, 2)))

            # 画目标框
            pen = QPen()
            pen.setWidth(2)  # 边框宽度
            for obj in self.objects:
                font.setPointSize(10)
                qp.setFont(font)
                rgb = [round(c) for c in obj['color']]
                pen.setColor(QColor(rgb[0], rgb[1], rgb[2]))  # 边框颜色
                brush1 = QBrush(Qt.NoBrush)  # 内部不填充
                qp.setBrush(brush1)
                qp.setPen(pen)
                # 坐标 宽高
                ox, oy = px + round(pw * obj['x']), py + round(ph * obj['y'])
                ow, oh = round(pw * obj['w']), round(ph * obj['h'])
                obj_rect = QRect(ox, oy, ow, oh)
                qp.drawRect(obj_rect)  # 画矩形框

                # 画 类别 和 置信度
                qp.drawText(
                    ox, oy - 5,
                    str(obj['class']) + str(round(obj['confidence'], 2)))
Exemplo n.º 2
0
    def paint_border_background(self, painter):
        """paint_border_background(self, painter:PySide2.QtGui.QPainter)"""
        painter.save()
        pen = QPen()
        pen.setColor(self.border_color())
        pen.setWidth(self.border_width())
        painter.setPen(pen)
        brush = QBrush(self.background_color())
        painter.setBrush(brush)
        painter.setOpacity(self.opacity())
        # painter.setRenderHint(QPainter.Antialiasing)
        rc = self.rect()
        paint_path = QPainterPath()
        # adjust shadow
        if self._shadow is not None:
            rc.adjust(self.shadow_blur(), self.shadow_blur(),
                      -self.shadow_blur(), -self.shadow_blur())

        # self._calc_background_path(rc, paint_path)
        if self._calc_background_path(rc, paint_path):
            painter.setRenderHint(QPainter.Antialiasing)

        if self.border_width() > 0:
            painter.drawPath(paint_path)
        else:
            painter.fillPath(paint_path, brush)

        painter.restore()
Exemplo n.º 3
0
 def prim(self):
     vertex = self.inputInitialVertex()
     if not vertex:
         return
     x = vertex[0]
     y = vertex[1]
     expansionMinima = []
     visitados = []
     pq = PriorityQueue()
     visitados.append((x, y))
     for vertice in self.grafo[(x, y)]:
         pq.put((vertice[1], [(x, y), vertice[0]]))
     while not pq.empty():
         actual = pq.get()
         if not actual[1][1] in visitados:
             visitados.append(actual[1][1])
             for vertice in self.grafo[actual[1][1]]:
                 if not vertice[0] in visitados:
                     pq.put((vertice[1], (actual[1][1], vertice[0])))
             expansionMinima.append(actual)
     print("")
     print("Minimo")
     for ver in expansionMinima:
         print(ver)
     pen = QPen()
     pen.setWidth(3)
     for particula in expansionMinima:
         color = QColor(255, 0, 0)
         pen.setColor(color)
         self.scene.addLine(particula[1][0][0] + 3, particula[1][0][1] + 3,
                            particula[1][1][0] + 3, particula[1][1][1] + 3,
                            pen)
Exemplo n.º 4
0
    def redraw(self):
        """
        Re-draws the buttons. May be called as initialization method too.
        """
        # Pixmap that contains the painter and the DR
        canvas = QPixmap("assets/" + self.digirule.get_img_name())
        self.setPixmap(canvas)
        painter = QPainter(self.pixmap(
        ))  # Create a painter in which buttons and LEDs are drawn

        translate_matrix = QMatrix()
        offset_scale = self.digirule.get_scale_offset()
        translate_matrix.scale(offset_scale[0], offset_scale[1])
        painter.setMatrix(translate_matrix)

        # Drawing
        pen = QPen()
        pen.setWidth(self.digirule.get_buttons_width())
        pen.setColor(QColor(0, 0, 0, 0))  # Buttons color
        painter.setPen(pen)

        # Buttons
        for btn in self.digirule.get_buttons_positions_dic():
            painter.drawPoint(QPoint(btn[0], btn[1]))

        pen.setWidth(2)
        painter.setPen(pen)

        for btn in self.digirule.get_special_buttons_rects_dic():
            # Draw rectangle given the top-left and bottom-right corners coordinates
            painter.drawRect(self._build_rect(btn))
Exemplo n.º 5
0
    def ordenar(self):
        #distancia : descendente
        #velocidad : ascendente
        self.limpiar()
        pen = QPen()
        pen.setWidth(1)
        if self.ui.comboOrdenar.currentText() == "Velocidad":
            self.particulas.sort()
            d = 0
            for particula in self.particulas:
                color = QColor(particula.color.r, particula.color.g,
                               particula.color.b)
                pen.setColor(color)
                self.scene.addLine(0, d, particula.distancia, d, pen)
                d += 1

        elif self.ui.comboOrdenar.currentText() == "Distancia":
            self.particulas.sort(key=lambda particula: particula.distancia,
                                 reverse=True)
            d = 0
            for particula in self.particulas:
                color = QColor(particula.color.r, particula.color.g,
                               particula.color.b)
                pen.setColor(color)
                self.scene.addLine(0, d, particula.distancia, d, pen)
                d += 1
Exemplo n.º 6
0
    def update_chart(self, task_list, current_date=None):
        self.chart.removeSeries(self.series)
        self.task_list = task_list

        result = TaskAnalyser.getPointFromTasks(self.task_list, self.max_bound,
                                                self.interval)
        self.axisX.setMin(self.max_bound -
                          datetime.timedelta(days=self.interval - 1))
        self.axisY.setRange(min(result), max(result))

        self.qdate = DatetimeParser.fromDateToQDate(str(self.max_bound.date()))
        self.axisX.setMax(self.max_bound)

        self.series = QtCharts.QLineSeries()
        self.series.setName("Karma points")
        self.axisX.setTickCount(self.interval)
        result.reverse()

        for i in range(len(result)):
            self.series.append(
                self.qdate.addDays(-self.interval - 1 - i).toMSecsSinceEpoch(),
                result[i])

        pen = QPen()
        pen.setWidth(3)
        pen.setColor(QColor(242, 183, 54))
        pen.setCapStyle(Qt.RoundCap)
        self.series.setPen(pen)
        self.chart.addSeries(self.series)
        self.update()
Exemplo n.º 7
0
    def scene_create_lines_for_cp(self, cp: ControlPoint, playerColor, enemyColor):
        scene = self.scene()
        pos = self._transform_point(cp.position)
        for connected_cp in cp.connected_points:
            pos2 = self._transform_point(connected_cp.position)
            if not cp.captured:
                color = CONST.COLORS["dark_"+enemyColor]
            elif cp.captured:
                color = CONST.COLORS["dark_"+playerColor]
            else:
                color = CONST.COLORS["dark_"+enemyColor]

            pen = QPen(brush=color)
            pen.setColor(color)
            pen.setWidth(6)
            if cp.captured and not connected_cp.captured and Conflict.has_frontline_between(cp, connected_cp):
                if not cp.captured:
                    scene.addLine(pos[0], pos[1], pos2[0], pos2[1], pen=pen)
                else:
                    posx, h = Conflict.frontline_position(self.game.theater, cp, connected_cp)
                    pos2 = self._transform_point(posx)
                    scene.addLine(pos[0], pos[1], pos2[0], pos2[1], pen=pen)

                    p1 = point_from_heading(pos2[0], pos2[1], h+180, 25)
                    p2 = point_from_heading(pos2[0], pos2[1], h, 25)
                    frontline_pen = QPen(brush=CONST.COLORS["bright_red"])
                    frontline_pen.setColor(CONST.COLORS["orange"])
                    frontline_pen.setWidth(8)
                    scene.addLine(p1[0], p1[1], p2[0], p2[1], pen=frontline_pen)

            else:
                scene.addLine(pos[0], pos[1], pos2[0], pos2[1], pen=pen)
Exemplo n.º 8
0
    def init(self):
        mask_brush = QBrush()
        mask_brush.setColor(Qt.gray)
        mask_brush.setStyle(Qt.SolidPattern)
        mask_pen = QPen()
        mask_pen.setColor(Qt.gray)
        self.upper_mask.setBrush(mask_brush)
        self.lower_mask.setBrush(mask_brush)
        self.upper_mask.setPen(mask_pen)
        self.lower_mask.setPen(mask_pen)
        self.addItem(self.upper_mask)
        self.addItem(self.lower_mask)

        font = QFont()
        font.setPointSize(20)
        font.setBold(True)
        self.stage_text_item.setPlainText(self._stage_text % self.stage)
        self.stage_text_item.setFont(font)
        self.stage_text_item.setDefaultTextColor(Qt.black)
        self.stage_text_item.setX(content_width / 2 - int(self.stage_text_item.boundingRect().width() / 2))
        self.stage_text_item.setY(content_height / 2 - int(self.stage_text_item.boundingRect().height() / 2))

        self.animation_timer_1.setInterval(interval)
        self.animation_timer_1.timeout.connect(self.animation_in)

        self.animation_timer_2.setSingleShot(True)
        self.animation_timer_2.timeout.connect(self.animation_hold)
        self.animation_timer_2.setInterval(800)

        self.animation_timer_3.setInterval(interval)
        self.animation_timer_3.timeout.connect(self.animation_out)
    def dibujar(self):
        pen = QPen()  #crear una pluma, que esta definida en la clase QPen
        pen.setWidth(3)  #Tamaño/anchura de la pluma

        for particula in self.contenedor_particulas:
            #Ponerle color a la puma
            r = particula.red  #randint(0, 255)#Generar un color de manera aleatoria
            g = particula.green  #randint(0, 255)#entre 0 y 255
            b = particula.blue  #randint(0, 255)

            color = QColor(r, g, b)

            pen.setColor(color)  #Asignarle el color a la variable pluma

            #Posiciones de origen y destino
            origen_x = particula.origen_x  #randint(0, 500)
            origen_y = particula.origen_y  #randint(0, 500)
            destino_x = particula.destino_x  #randint(0, 500)
            destino_y = particula.destino_y  #randint(0, 500)

            self.scene.addEllipse(
                origen_x, origen_y, 3, 3, pen
            )  #En que posicion se va a dibujar (x,y) y el radio (3,3) y la pluma
            self.scene.addEllipse(
                destino_x, destino_y, 3, 3, pen
            )  #En que posicion se va a dibujar (x,y) y el radio (3,3) y la pluma

            #Para dibujar una linea para conectar los 2 puntos
            self.scene.addLine(origen_x + 2, origen_y + 2, destino_x,
                               destino_y,
                               pen)  #Origen en 'x','y' y destino en 'x','y',
Exemplo n.º 10
0
    def dibujar_kruskal(self):
        self.mostrar()
        if not self.grafo or len(self.cern) == 0:
            QMessageBox.critical(
                self,
                "No se pudo leer",
                "Convierta a grafo no vacío antes"
            )
        else:
            arbol = self.cern.kruskal()
            print("Arbol de expansion minima: ")
            print(arbol)

            self.ui.tabWidget.setCurrentIndex(2)
            
            pen = QPen()
            pen.setDashPattern([1,3])
            color  = QColor(255,255,255)
            pen.setColor(color)
            pen.setWidth(4)
            
            for arista in arbol:

                origen = arista[1]
                destino = arista[2]

                self.scene.addLine(origen[0]+3, origen[1]+3, destino[0], destino[1], pen)
Exemplo n.º 11
0
    def addRandomGraph(self):
        n = 50 # number of points in graph

        style   = {1:QCPGraph.lsLine, 2:QCPGraph.lsStepLeft, 3:QCPGraph.lsStepRight, 4:QCPGraph.lsStepCenter, 5:QCPGraph.lsImpulse }
        scatter = {1:QCPScatterStyle.ssCross, 2:QCPScatterStyle.ssPlus, 3:QCPScatterStyle.ssCircle, 4:QCPScatterStyle.ssSquare, 5:QCPScatterStyle.ssDiamond, 6:QCPScatterStyle.ssDiamond }

        xScale  = (uniform(0,1) + 0.5)*2
        yScale  = (uniform(0,1) + 0.5)*2
        xOffset = (uniform(0,1) - 0.5)*4
        yOffset = (uniform(0,1) - 0.5)*10
        r1 = (uniform(0,1) - 0.5)*2
        r2 = (uniform(0,1) - 0.5)*2
        r3 = (uniform(0,1) - 0.5)*2
        r4 = (uniform(0,1) - 0.5)*2
        x = [0.0] * n
        y = [0.0] * n
        for i in range(0, n):
          x[i] = (float(i)/float(n)-0.5)*10.0*xScale + xOffset
          y[i] = (math.sin(x[i]*r1*5.0)*math.sin(math.cos(x[i]*r2)*r4*3.0)+r3*math.cos(math.sin(x[i])*r4*2.0))*yScale + yOffset
      
        gx = self.ui.customPlot.addGraph()
        #print("GX=",gx," and ",self.ui.customPlot.graph())
        gx.setName("New graph "+str(self.ui.customPlot.graphCount()-1))
        gx.setData(x, y)
        gx.setLineStyle(style[randint(1,5)]);
        if randint(0,100) >50:
            st = QCPScatterStyle(scatter[randint(1,6)])
            gx.setScatterStyle(st)
        graphPen = QPen()
        graphPen.setColor(QColor(randint(0,245)+10, randint(0,245)+10, randint(0,245)+10));
        graphPen.setWidthF(uniform(0,1)*2.0+1)
        gx.setPen(graphPen)
        self.ui.customPlot.replot()
Exemplo n.º 12
0
    def paintEvent(self, arg__1: QPaintEvent):
        # super(Push, self).paintEvent(arg__1)
        # lightgrey
        painter = QPainter()
        painter.begin(self)
        pen = QPen(QColor(162, 181, 205), 2, Qt.SolidLine)
        painter.setBrush(QBrush(QColor(255, 255, 255)))
        painter.setPen(pen)
        painter.setRenderHint(QPainter.Antialiasing, True)
        rect = QRect()
        rect.moveTo(1, 10)
        rect.setWidth(140)
        rect.setHeight(140)
        painter.drawRoundedRect(rect, 5, 5)
        painter.drawConvexPolygon(
            [QPoint(60, 10), QPoint(80, 10),
             QPoint(70, 1)])

        pen.setColor(QColor(255, 255, 255))
        painter.setPen(pen)
        painter.drawLine(63, 10, 77, 10)
        pen.setWidth(1)
        painter.setPen(pen)
        painter.drawPoints([QPoint(61, 10), QPoint(78, 10)])
        painter.end()
Exemplo n.º 13
0
 def puntosCercanos(self):
     indice = 0
     objetivo = 0
     for punto in self.puntos:
         if indice == len(self.puntos) - 1:
             minimo = self.getDistanceBetween(punto['x'], punto['y'],
                                              self.puntos[0]['x'],
                                              self.puntos[0]['y'])
             objetivo = self.puntos[0]
         else:
             minimo = self.getDistanceBetween(punto['x'], punto['y'],
                                              self.puntos[indice + 1]['x'],
                                              self.puntos[indice + 1]['y'])
             objetivo = self.puntos[indice + 1]
         for puntoComparacion in self.puntos:
             if puntoComparacion == punto:
                 continue
             distance = self.getDistanceBetween(punto['x'], punto['y'],
                                                puntoComparacion['x'],
                                                puntoComparacion['y'])
             if distance < minimo:
                 minimo = distance
                 objetivo = puntoComparacion
                 #
         #Pintamos la linea
         pen = QPen()
         pen.setWidth(3)
         color = QColor(punto["color"].r, punto["color"].g,
                        punto["color"].b)
         pen.setColor(color)
         self.scene.addLine(punto["x"] + 3, punto["y"] + 3,
                            objetivo["x"] + 3, objetivo["y"] + 3, pen)
         indice += 1
Exemplo n.º 14
0
class Tool:
    def __init__(self):
        self.pen = QPen(
            QColor(0, 0, 0, 0),
            0,
            Qt.SolidLine,
            Qt.RoundCap,
            Qt.BevelJoin,
        )
        self.set_size(1)

    def set_size(self, size):
        self.size = size
        self.alpha = 255
        if size < 1:
            self.alpha = int(255 * size)
            self.size = 1
        self.pen.setWidth(self.size)
        color = self.pen.color()
        color.setAlpha(self.alpha)
        self.pen.setColor(color)

    def draw(self, last, now, update_rect, scribbles, wet):
        for overlay in scribbles[-1], wet:
            if overlay:
                overlay.reserve(update_rect)
                with overlay.painter_context() as painter:
                    painter.setPen(self.pen)
                    painter.setRenderHint(QPainter.Antialiasing)
                    painter.drawLine(last, now)
Exemplo n.º 15
0
    def paint(self, painter, option, widget):
        rect = self.boundingRect()

        # print(rect)
        # if self.pressed:
        #   pen = QPen(Qt.red, 3)
        #   painter.setPen(pen)
        #   painter.drawEllipse(rect)           
        # else:
        pen = QPen(Qt.black, 3)
        font = painter.font()
        font.setPixelSize(12)
        painter.setFont(font)
        painter.setPen(pen)
        painter.drawRect(rect)
        painter.drawText(self.startX+5, self.startY+20, f'Slot-{self.text}')
        # Draw a LED at right corner
        brush = QBrush()
        brush.setStyle(Qt.SolidPattern)
        if self.slotId % 3 == 0:
            brush.setColor(Qt.red)
        elif self.slotId % 2 == 0:
            brush.setColor(Qt.green)
        else:
            brush.setColor(Qt.cyan)

        # brush.setColor(Qt.red)
        painter.setBrush(brush)
        pen = QPen()
        pen.setWidth(1)
        pen.setColor(Qt.blue)
        painter.setPen(pen)
        painter.drawEllipse(self.startX+5+80, self.startY+5, 10, 10)
Exemplo n.º 16
0
 def paint(self, painter, options, widget):
     pen = QPen()
     pen.setColor(self.color)
     pen.setStyle(Qt.DashLine)
     pen.setCapStyle(Qt.RoundCap)
     pen.setWidth(ConnectionIndicator.PEN_WIDTH)
     painter.setPen(pen)
     painter.drawLine(self._srcPoint, self._destPoint)
Exemplo n.º 17
0
 def paintEvent(self, event):
     kist = QPen()
     kist.setColor(QColor('Yellow'))
     kist.setWidth(2)
     kist.setJoinStyle(Qt.RoundJoin)
     painter = QPainter(self)
     painter.setPen(kist)
     painter.drawPath(self.path)
Exemplo n.º 18
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

        # 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)

        painter.end()
Exemplo n.º 19
0
    def mostrar(self):
        self.ui.salida.clear()
        self.libreria.mostrar()
        self.ui.salida.insertPlainText(str(self.libreria))

        self.ui.tabla.setColumnCount(10)
        headers = [
            'ID', 'origen x', 'origen y', 'destino x', 'destino y',
            'velocidad', 'red', 'green', 'blue', 'distancia'
        ]
        self.ui.tabla.setHorizontalHeaderLabels(headers)

        self.ui.tabla.setRowCount(len(self.libreria))

        row = 0

        for particula in self.libreria:
            id_widget = QTableWidgetItem(str(particula.id))
            origen_x_widget = QTableWidgetItem(str(particula.origen_x))
            origen_y_widget = QTableWidgetItem(str(particula.origen_y))
            destino_x_widget = QTableWidgetItem(str(particula.destino_x))
            destino_y_widget = QTableWidgetItem(str(particula.destino_y))
            velocidad_widget = QTableWidgetItem(str(particula.velocidad))
            red_widget = QTableWidgetItem(str(particula.red))
            green_widget = QTableWidgetItem(str(particula.green))
            blue_widget = QTableWidgetItem(str(particula.blue))
            distancia_widget = QTableWidgetItem(str(particula.distancia))

            self.ui.tabla.setItem(row, 0, id_widget)
            self.ui.tabla.setItem(row, 1, origen_x_widget)
            self.ui.tabla.setItem(row, 2, origen_y_widget)
            self.ui.tabla.setItem(row, 3, destino_x_widget)
            self.ui.tabla.setItem(row, 4, destino_y_widget)
            self.ui.tabla.setItem(row, 5, velocidad_widget)
            self.ui.tabla.setItem(row, 6, red_widget)
            self.ui.tabla.setItem(row, 7, green_widget)
            self.ui.tabla.setItem(row, 8, blue_widget)
            self.ui.tabla.setItem(row, 9, distancia_widget)

            row += 1

        pen = QPen()
        pen.setWidth(2)

        for particula in self.libreria:  #'MainWindow' object has no attribute 'particulas'
            r = particula.red
            g = particula.green
            b = particula.blue
            color = QColor(r, g, b)
            pen.setColor(color)

            self.scene.addEllipse(particula.origen_x, particula.origen_y, 4, 4,
                                  pen)
            self.scene.addEllipse(particula.destino_x, particula.destino_y, 4,
                                  4, pen)
            self.scene.addLine(particula.origen_x, particula.origen_y,
                               particula.destino_x, particula.destino_y, pen)
Exemplo n.º 20
0
    def paint(self, painter, rect):
        painter.fillRect(rect, self.background_color)
        pen = QPen()
        pen.setColor(self.foreground_color)
        pen.setWidth(2)
        painter.setPen(pen)

        for slot in self.slots:
            self.paint_slot(painter, slot, rect)
    def selectTile(self, x, y):
        pen = QPen()
        pen.setColor(QColor(0x00, 0x32, 0x32, 0x60))
        pen.setWidth(4)
        new_x, new_y = self.findTilePos(x, y)
        selection_rect = QRect(new_x, new_y, self._tile_w, self._tile_h)

        if self._selection_rect is not None:
            self._scene.removeItem(self._selection_rect)
        self._selection_rect = self._scene.addRect(selection_rect, pen)
Exemplo n.º 22
0
 def _make_pen(self):
     pen = QPen()
     pen.setWidth(self._width)
     color = QGuiApplication.palette().color(QPalette.Normal,
                                             QPalette.WindowText)
     color.setAlphaF(0.8)
     pen.setColor(color)
     pen.setStyle(Qt.SolidLine)
     pen.setCapStyle(Qt.RoundCap)
     return pen
Exemplo n.º 23
0
 def resolveFinalNodeBorder(self):
     pen = QPen()
     if self.isAcceptable == True:
         pen.setColor(self.borderQColor)
         pen.setWidth(2)
     else:
         pen.setColor(self.currentFill)
         pen.setWidth(1)
     self.finalNodeBorder.setPen(pen)
     self.update()
Exemplo n.º 24
0
    def draw(self, qp):
        qp.setWindow(0, 0, self.width(), self.height())  # 设置窗口
        # 画框架背景
        qp.setBrush(QColor('#cecece'))  # 框架背景色
        qp.setPen(Qt.NoPen)
        rect = QRect(0, 0, self.width(), self.height())
        qp.drawRect(rect)

        sw, sh = self.width(), self.height()  # 图像窗口宽高
        pw, ph = 0, 0  # 缩放后的QPixmap大小

        # 画图
        yh = 0
        if self.image is not None:
            ih, iw, _ = self.image.shape
            self.scale = sw / iw if sw / iw < sh / ih else sh / ih  # 缩放比例
            yh = round((self.height() - ih * self.scale) / 2)
            qimage = QImage(self.image.data, iw, ih, 3 * iw,
                            QImage.Format_RGB888)  # 转QImage
            qpixmap = QPixmap.fromImage(
                qimage.scaled(self.width(), self.height(),
                              Qt.KeepAspectRatio))  # 转QPixmap
            pw, ph = qpixmap.width(), qpixmap.height()
            qp.drawPixmap(0, yh, qpixmap)

        font = QFont()
        font.setFamily('Microsoft YaHei')
        if self.fps > 0:
            font.setPointSize(14)
            qp.setFont(font)
            pen = QPen()
            pen.setColor(Qt.white)
            qp.setPen(pen)
            qp.drawText(self.width() - 150, yh + 40,
                        'FPS: ' + str(round(self.fps, 2)))

        # 画目标框
        pen = QPen()
        pen.setWidth(2)  # 边框宽度
        for obj in self.objects:
            font.setPointSize(10)
            qp.setFont(font)
            rgb = [round(c) for c in obj['color']]
            pen.setColor(QColor(rgb[0], rgb[1], rgb[2]))  # 边框颜色
            brush1 = QBrush(Qt.NoBrush)  # 内部不填充
            qp.setBrush(brush1)
            qp.setPen(pen)
            # 坐标 宽高
            tx, ty = round(pw * obj['x']), yh + round(ph * obj['y'])
            tw, th = round(pw * obj['w']), round(ph * obj['h'])
            obj_rect = QRect(tx, ty, tw, th)
            qp.drawRect(obj_rect)  # 画矩形框
            # 画 类别 和 置信度
            qp.drawText(tx, ty - 5,
                        str(obj['class']) + str(round(obj['confidence'], 2)))
    def flight_path_pen(self, player: bool, selected: bool) -> QPen:
        if selected and DisplayOptions.flight_paths.all:
            return self.highlight_color()

        name = self.base_faction_color_name(player)
        color = CONST.COLORS[name]
        pen = QPen(brush=color)
        pen.setColor(color)
        pen.setWidth(1)
        pen.setStyle(Qt.DashDotLine)
        return pen
Exemplo n.º 26
0
    def __init__(self, x1: float, y1: float, x2: float, y2: float,
                 mission_target: MissionTarget) -> None:
        super().__init__(x1, y1, x2, y2)
        self.mission_target = mission_target
        self.new_package_dialog: Optional[QNewPackageDialog] = None
        self.setAcceptHoverEvents(True)

        pen = QPen(brush=const.COLORS["bright_red"])
        pen.setColor(const.COLORS["orange"])
        pen.setWidth(8)
        self.setPen(pen)
Exemplo n.º 27
0
 def dibujar(self):
     pen = QPen()
     pen.setWidth(3)
     for particula in self.particulas:
         color = QColor(particula.color.r, particula.color.g,
                        particula.color.b)
         pen.setColor(color)
         self.scene.addLine(particula.origen.x + 3, particula.origen.y + 3,
                            particula.destino.x + 3,
                            particula.destino.y + 3, pen)
     self.dibujarPuntos()
Exemplo n.º 28
0
 def Dibujar_part(self):
     for particula in self.administra:
         pen = QPen()
         pen.setWidth(2)
         color = QColor(particula.red, particula.green, particula.blue)
         pen.setColor(color)
         self.scene.addEllipse(particula.origen_x, particula.origen_y, 3, 3,
                               pen)
         self.scene.addEllipse(particula.destino_x, particula.destino_y, 3,
                               3, pen)
         self.scene.addLine(particula.origen_x + 3, particula.origen_y + 3,
                            particula.destino_x, particula.destino_y, pen)
    def recorridoDijkstra(self):
        self.ui.salida_grafo.clear()
        self.scene.clear()

        pen = QPen()
        pen.setWidth(3)

        color = QColor(245, 0, 135)
        pen.setColor(color)

        orig_x = self.ui.orig_x_spinBox.value()
        orig_y = self.ui.orig_y_spinBox.value()
        dest_x = self.ui.dest_x_spinBox.value()
        dest_y = self.ui.dest_y_spinBox.value()

        recorrido_Dijkstra = self.contenedor_particulas.recorridoDijkstra(
            orig_x, orig_y)

        str = pformat(recorrido_Dijkstra, width=40, indent=1)

        self.ui.salida_grafo.insertPlainText(
            "RECORRIDO (CAMINO) -> ALGORITMO DE DIJKSTRA\n\n")
        self.ui.salida_grafo.insertPlainText(str)

        origenDIJ = (dest_x, dest_y
                     )  #El destino es a partir de donde va a iniciar a dibujar
        destinoDIJ = (orig_x, orig_y)  #hasta llegar al origen

        ady = recorrido_Dijkstra.get(origenDIJ)

        or_x = origenDIJ[0]  #Elorigen x, va a ser el destino x
        or_y = origenDIJ[1]  #El origen y, va a ser el destino y

        dest_x = ady[0]
        dest_y = ady[1]

        self.scene.addEllipse(or_x, or_y, 4, 4, pen)
        self.scene.addEllipse(dest_x, dest_y, 4, 4, pen)
        self.scene.addLine(or_x + 2, or_y + 2, dest_x, dest_y, pen)

        while destinoDIJ != ady:
            nuevoDestino = (dest_x, dest_y)
            or_x = nuevoDestino[0]
            or_y = nuevoDestino[1]

            ady = recorrido_Dijkstra.get(nuevoDestino)

            dest_x = ady[0]
            dest_y = ady[1]

            self.scene.addEllipse(or_x, or_y, 4, 4, pen)
            self.scene.addEllipse(dest_x, dest_y, 4, 4, pen)
            self.scene.addLine(or_x + 2, or_y + 2, dest_x, dest_y, pen)
Exemplo n.º 30
0
    def drawCurve(self):
        painter = QPainter(self.ui.curve)
        painter.setPen(QColor(114, 159, 207))

        width = self.ui.curve.width()
        height = self.ui.curve.height()

        for i in range(0, height, 25):
            painter.drawLine(0, i, width, i)

        for i in range(0, width, 20):
            painter.drawLine(i, 0, i, height)

        pen = QPen()
        pen.setColor(QColor(114, 159, 207))
        pen.setWidth(2)
        painter.setPen(pen)
        painter.setRenderHint(QPainter.Antialiasing, True)
        maxTemp = max(self.tempList)
        minTemp = min(self.tempList)
        stepTemp = max((maxTemp - minTemp) / 10, 0.01)
        midTemp = (maxTemp + minTemp) / 2.0
        fromTemp = (midTemp - stepTemp * 5.5)
        toTemp = (midTemp + stepTemp * 5.5)
        gapTemp = 11 * stepTemp
        for i in range(0, 60):
            painter.drawLine(
                i * width / 60.0,
                height * ((toTemp - self.tempList[i]) / gapTemp),
                (i + 1) * width / 60.0,
                height * ((toTemp - self.tempList[i + 1]) / gapTemp))
        temp = toTemp
        self.ui.tempLabel_1.setText("%.2f" % temp)
        temp -= stepTemp
        self.ui.tempLabel_2.setText("%.2f" % temp)
        temp -= stepTemp
        self.ui.tempLabel_3.setText("%.2f" % temp)
        temp -= stepTemp
        self.ui.tempLabel_4.setText("%.2f" % temp)
        temp -= stepTemp
        self.ui.tempLabel_5.setText("%.2f" % temp)
        temp -= stepTemp
        self.ui.tempLabel_6.setText("%.2f" % temp)
        temp -= stepTemp
        self.ui.tempLabel_7.setText("%.2f" % temp)
        temp -= stepTemp
        self.ui.tempLabel_8.setText("%.2f" % temp)
        temp -= stepTemp
        self.ui.tempLabel_9.setText("%.2f" % temp)
        temp -= stepTemp
        self.ui.tempLabel_10.setText("%.2f" % temp)
        temp -= stepTemp
        self.ui.tempLabel_11.setText("%.2f" % temp)
Exemplo n.º 31
0
 def paint(self, painter: QPainter, styleOption: QStyleOptionGraphicsItem, widget: QWidget=None):
     pen = QPen()
     pen.setWidthF(0.05)
     pen.setColor(Qt.darkGray)
     painter.setPen(pen)
     brush = QBrush()
     brush.setColor(self.color)
     brush.setStyle(Qt.SolidPattern)
     painter.setBrush(brush)
     topLeft = QPointF(0, 0)
     bottomRight = QPointF(1, 1)
     rectangle = QRectF(topLeft, bottomRight)
     rectangle.translate(-0.5, -0.5)
     painter.drawRect(rectangle)
Exemplo n.º 32
0
    def paintEvent(self, paintEvent: QPaintEvent):
        pen = QPen()
        pen.setJoinStyle(Qt.RoundJoin)
        pen.setCapStyle(Qt.RoundCap)
        painter = QPainter(self)
        painter.translate(self.paintOffset)
        painter.setBackgroundMode(Qt.TransparentMode)
        painter.setRenderHint(QPainter.Antialiasing)

        if self.nodes is not None:
            painted = set()

            def paintNode(node):
                nonlocal painter, painted
                if node in painted:
                    return
                painted.add(node)
                for link in node.links:
                    if link not in painted:
                        painter.drawLine(node.point, link.point)
                        paintNode(link)

            color = self.palette().color(QPalette.Dark)
            pen.setColor(color)
            pen.setWidth(0.50 * self.paintStep)
            painter.setPen(pen)
            for node in self.nodes.values():
                if paintEvent.region().contains(node.point):
                    paintNode(node)

        if self.startNode is not None:
            color = self.palette().color(QPalette.Dark)
            pen.setColor(color)
            pen.setWidth(0.75 * self.paintStep)
            painter.setPen(pen)
            if paintEvent.region().contains(self.startNode.point):
                painter.drawPoint(self.startNode.point)

        if self.finishNode is not None and paintEvent.region().contains(self.finishNode.point):
            color = self.palette().color(QPalette.Dark).darker(120)
            pen.setColor(color)
            pen.setWidth(0.75 * self.paintStep)
            painter.setPen(pen)
            painter.drawPoint(self.finishNode.point)

        if self.player is not None:
            color = self.palette().color(QPalette.Highlight)
            color.setAlpha(196)
            pen.setColor(color)
            pen.setWidth(0.90 * self.paintStep)
            painter.setPen(pen)
            painter.drawPoint(self.player)

        del painter, pen
Exemplo n.º 33
0
        def paintEvent(self, paintEvent: QPaintEvent):
            painter = QPainter(self)
            painter.setBackgroundMode(Qt.TransparentMode)
            painter.setRenderHint(QPainter.Antialiasing)
            brush = QBrush()
            brush.setStyle(Qt.SolidPattern)
            pen = QPen()
            pen.setJoinStyle(Qt.RoundJoin)
            pen.setCapStyle(Qt.RoundCap)

            center = QPoint(self.width() // 2, self.height() // 2)
            radius = 0.45 * min(self.width(), self.height())

            pen.setColor(self.palette().color(self.color[0]))
            brush.setColor(self.palette().color(self.color[1]))
            if self.highlight is True:
                pen.setColor(self.palette().color(QPalette.Highlight))
            pen.setWidth(round(0.15 * radius))
            painter.setBrush(brush)
            painter.setPen(pen)
            painter.drawEllipse(center, radius, radius)

            if self.checked is True:
                brush.setColor(self.palette().color(QPalette.Background))
                pen.setColor(self.palette().color(QPalette.Background))
                painter.setPen(pen)
                painter.setBrush(brush)
                painter.drawEllipse(center, 0.40 * radius, 0.40 * radius)
            del painter, brush, pen
Exemplo n.º 34
0
        def __init__(self, tetris: Tetris):
            super(QTetris.QScene, self).__init__()
            self.tetris = tetris

            pen = QPen()
            pen.setWidthF(0.05)
            pen.setColor(Qt.lightGray)
            brush = QBrush(Qt.NoBrush)
            rect = QRectF(0, 0, tetris.num_rows, tetris.num_columns)
            rect.translate(-0.5, -0.5)
            self.setSceneRect(rect)
            self.addRect(rect, pen, brush)
            self.setBackgroundBrush(self.palette().window())

            for column in range(0, tetris.num_columns, 2):
                pen = QPen(Qt.NoPen)
                brush = QBrush(Qt.SolidPattern)
                brush.setColor(Qt.lightGray)
                topLeft = QPointF(0, column)
                bottomRight = QPointF(tetris.num_rows, column + 1)
                rectangle = QRectF(topLeft, bottomRight)
                rectangle.translate(-0.5, -0.5)
                self.addRect(rectangle, pen, brush)