コード例 #1
0
ファイル: charts.py プロジェクト: djdt/nanopart
    def __init__(self, parent: QtWidgets.QGraphicsItem = None):
        super().__init__(parent)
        self.setMinimumSize(640, 320)

        self._xaxis = QtCharts.QValueAxis()
        self._xaxis.setVisible(False)

        self.xaxis = NiceValueAxis()
        self.xaxis.setTitleText("Size (nm)")
        self.xaxis.setGridLineVisible(False)

        self.yaxis = QtCharts.QValueAxis()
        self.yaxis.setGridLineVisible(False)
        self.yaxis.setTitleText("Count")
        self.yaxis.setLabelFormat("%d")

        self.addAxis(self._xaxis, QtCore.Qt.AlignBottom)
        self.addAxis(self.xaxis, QtCore.Qt.AlignBottom)
        self.addAxis(self.yaxis, QtCore.Qt.AlignLeft)

        self.series = QtCharts.QBarSeries()
        self.series.setBarWidth(0.9)
        self.addSeries(self.series)
        self.series.attachAxis(self._xaxis)
        self.series.attachAxis(self.yaxis)

        self.set = QtCharts.QBarSet("sizes")
        self.set.setColor(QtCore.Qt.black)
        self.set.hovered.connect(self.barHovered)
        self.series.append(self.set)

        self.fit = QtCharts.QSplineSeries()
        self.fit.setPen(QtGui.QPen(QtGui.QColor(255, 172, 0), 2.0))
        self.addSeries(self.fit)
        self.fit.attachAxis(self.xaxis)
        self.fit.attachAxis(self.yaxis)

        self.label_fit = QtWidgets.QGraphicsTextItem(self)
        self.label_fit.setFont(QtGui.QFont("sans", 12, italic=False))
        self.label_fit.setZValue(99)
        self.label_fit.setDefaultTextColor(QtGui.QColor(255, 172, 0))
        self.xaxis.rangeChanged.connect(self.updateFitLabelPos)

        self.label_hovered = QtWidgets.QGraphicsTextItem(self)
        self.plotAreaChanged.connect(self.updateHoveredLabelPos)

        self.vlines: List[QtCharts.QLineSeries] = []

        # Clean legend
        self.legend().setMarkerShape(QtCharts.QLegend.MarkerShapeFromSeries)
        self.legend().markers(self.series)[0].setVisible(False)
コード例 #2
0
    def __init__(self, parent, index):
        super().__init__()
        self.color = (255, 0, 0)
        self._layout = minimized_layout
        self._input_items = {}
        self._output_items = {}
        self.painter = minimized_painter
        self.inputs = [PortItem(OutPort(parent.rtl, index, 'dummy'), self)]
        port_text = QtWidgets.QGraphicsTextItem('dummy', self)
        self._input_items[self.inputs[0]] = port_text

        self.outputs = []
        self._text_item = QtWidgets.QGraphicsTextItem('', self)
        self.layout()
コード例 #3
0
ファイル: node.py プロジェクト: HouJingChen99/gearbox-8
    def _add_port(self, port, display_name=True):
        port_item = PortItem(port, self)
        port_item.display_name = display_name
        text = QtWidgets.QGraphicsTextItem(port_item.name, self)
        text.font().setPointSize(8)
        text.setFont(text.font())
        # text.setVisible(display_name)

        if isinstance(port, InPort):
            port_node_name = f'i{len(self._input_items)}'
            self.layout_graph.add_node(port_node_name,
                                       label='',
                                       width=1 / 72,
                                       height=1 / 72)
            self._input_items[port_item] = text
        else:
            port_node_name = f'o{len(self._output_items)}'
            self.layout_graph.add_node(port_node_name,
                                       label='',
                                       width=1 / 72,
                                       height=1 / 72)

            self._output_items[port_item] = text

        return port_item
コード例 #4
0
ファイル: node.py プロジェクト: HouJingChen99/gearbox-8
    def __init__(self,
                 name,
                 layout,
                 parent=None,
                 model=None,
                 graph=Inject('gearbox/graph')):
        super().__init__(name)

        self._layout = layout
        self.parent = parent
        self.graph = graph
        self.model = model
        self.layout_graph = pgv.AGraph(directed=True,
                                       rankdir='LR',
                                       splines='true',
                                       strict=False)

        self.layout_pipe_map = {}

        self._text_item = QtWidgets.QGraphicsTextItem(self.name, self)
        self._input_items = {}
        self._output_items = {}
        self._nodes = []
        self.pipes = []
        self.minimum_size = (80, 80)

        self.layout_vertices = {}
        self.layout_root_vertices = []
        self.layout_edges = []
        self.layout_inport_vertices = {}
        self.layout_outport_vertices = {}

        self.collapsed = False if parent is None else True
        self.layers = []
コード例 #5
0
ファイル: graphicsview.py プロジェクト: down3db/tread
 def __init__(self):
     super(GraphicsView, self).__init__()
     self.setMouseTracking(True)
     #self.scene = QtWidgets.QGraphicsScene()
     self.scene = GraphicsScene()
     self.st = self.scene.addItem(
         QtWidgets.QGraphicsTextItem("Hello, world!"))
     self.setScene(self.scene)
     pub.subscribe(self.addState, "CONTROLLER_ADD_STATE")
     pub.subscribe(self.addTransition, "CONTROLLER_ADD_TRANSITION")
コード例 #6
0
    def __init__(self, title: str = None, parent: QtWidgets.QWidget = None):
        super().__init__(QtCharts.QChart(), theme=light_theme, parent=parent)
        self.setRubberBand(QtCharts.QChartView.RectangleRubberBand)
        self.setMinimumSize(QtCore.QSize(640, 480))
        self.setRenderHint(QtGui.QPainter.Antialiasing)

        if title is not None:
            self.chart().setTitle(title)

        self.chart().legend().hide()

        self.xaxis = QtCharts.QValueAxis()
        self.yaxis = QtCharts.QValueAxis()

        self.addAxis(self.xaxis, QtCore.Qt.AlignBottom)
        self.addAxis(self.yaxis, QtCore.Qt.AlignLeft)

        self.label_series = QtCharts.QScatterSeries()
        self.label_series.append(0, 0)
        self.label_series.setBrush(
            QtGui.QBrush(QtCore.Qt.black, QtCore.Qt.NoBrush))
        self.label_series.setPointLabelsFormat("(@xPoint, @yPoint)")
        self.label_series.setPointLabelsColor(light_theme["text"])
        self.label_series.setVisible(False)

        self.chart().addSeries(self.label_series)
        self.label_series.attachAxis(self.xaxis)
        self.label_series.attachAxis(self.yaxis)

        self.line = QtCharts.QLineSeries()
        self.line.setPen(QtGui.QPen(sequential[1], 1.5))
        # self.line.setColor(QtCore.Qt.red)

        self.chart().addSeries(self.line)
        self.line.attachAxis(self.xaxis)
        self.line.attachAxis(self.yaxis)

        self.series = QtCharts.QScatterSeries()
        self.series.setPen(QtGui.QPen(sequential[1], 1.5))
        self.series.setBrush(QtGui.QBrush(highlights[1]))
        self.series.setMarkerSize(12)

        self.chart().addSeries(self.series)
        self.series.attachAxis(self.xaxis)
        self.series.attachAxis(self.yaxis)

        self.series.hovered.connect(self.showPointPosition)

        self.label = QtWidgets.QGraphicsTextItem()
        self.label.setPlainText("hats")
        self.label.setFlag(QtWidgets.QGraphicsItem.ItemIgnoresTransformations)
        self.chart().scene().addItem(self.label)
        self.chart().plotAreaChanged.connect(self.moveLabel)
コード例 #7
0
    def start_clicked(self):
        if not self.textItem:
            self.textItem = QtWidgets.QGraphicsTextItem()
            self.textItem.setPos(
                0,
                self.centralwidget.frameGeometry().height() // 2)
            self.textItem.setPlainText('<-- @ _ @ -->')
            self.textItem.setTextWidth(200)
            self.sceneView.addItem(self.textItem)

        if not self.timer.isActive():
            self.timer.start(10)
コード例 #8
0
ファイル: node_base.py プロジェクト: kurtontheway/NodeGraphQt
 def __init__(self, name='node', parent=None):
     super(NodeItem, self).__init__(name, parent)
     pixmap = QtGui.QPixmap(ICON_NODE_BASE)
     pixmap = pixmap.scaledToHeight(NODE_ICON_SIZE,
                                    QtCore.Qt.SmoothTransformation)
     self._properties['icon'] = ICON_NODE_BASE
     self._icon_item = QtWidgets.QGraphicsPixmapItem(pixmap, self)
     self._text_item = QtWidgets.QGraphicsTextItem(self.name, self)
     self._x_item = XDisabledItem(self, 'node disabled')
     self._input_text_items = {}
     self._output_text_items = {}
     self._input_items = []
     self._output_items = []
     self._widgets = OrderedDict()
コード例 #9
0
    def __init__(self, parent, cmdp, state):
        pg.GraphicsObject.__init__(self, parent)
        self._parent = parent
        self._cmdp = cmdp
        self._log = logging.getLogger('%s.%s' % (__name__, state['x']))
        self._move_start_point = None
        y = state.get('y')
        if y is not None:
            y = float(y)

        my_id = state.get('id')
        if my_id is None:  # assign an id
            my_id = id(self)
            while my_id in _registry:
                my_id += 1
        elif my_id in _registry:
            raise RuntimeError(f'id {my_id} already in annotation registry')

        self._state = {
            'id': my_id,
            'signal_name': state['signal_name'],
            'x': float(state['x']),
            'y': y,
            'group_id': 0,
            'text': state.get('text'),
            'text_visible': True,
            'size': state.get('size', 6),
        }
        _registry[my_id] = weakref.ref(self)
        self._pathItem = QtWidgets.QGraphicsPathItem()
        self._pathItem.setParentItem(self)

        self._text_item = QtWidgets.QGraphicsTextItem(self)
        self._text_item.setParentItem(self)
        self._text_item.setVisible(bool(self._state['text_visible']))

        self.group_id = state.get('group_id', 0)

        self._lastTransform = None
        self._lastScene = None
        self._fill = pg.mkBrush(None)
        self._border = pg.mkPen(None)

        self.group_id = self._state['group_id']
        self.setPos(self._state['x'], 0.0)
        self._z_value_set()

        self.text = self._state['text']
        self._update_colors()
        self.prepareGeometryChange()
コード例 #10
0
 def __init__(self, parent=None, field=None, units=None, cmdp=None):
     pg.GraphicsWidget.__init__(self, parent=parent)
     self._field = field
     self._units = units
     self.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
     self._label = QtWidgets.QGraphicsTextItem(self)
     self._label.setVisible(True)
     self._label.document().setUseDesignMetrics(True)
     self._value_cache = None
     self._cmdp = cmdp
     labels = single_stat_to_api(-0.000000001, 0.000001, -0.001, 0.001, self._units)
     self.data_update(labels)
     self._resize()
     self.data_clear()
     cmdp.subscribe('Widgets/Waveform/Statistics/font-color', self._on_font_color, update_now=True)
     pg.GraphicsWidget.show(self)
コード例 #11
0
    def draw_pieces(self):
        for item in self.scenePlayerA.items():
            self.scenePlayerA.removeItem(item)
        if self.board.firstSize > 3 or self.board.secondSize > 3 or self.board.thirdSize > 3:
            space_size = 23
            font_size = 13
            distance_from_edge = 30
        else:
            space_size = 40
            font_size = 20
            distance_from_edge = 50

        for i in range(len(self.board.pieces)):
            for j in range(len(self.board.pieces[i])):
                if self.board.pieces[i][j].value != 0:
                    self.board.pieces[i][j].setPos(
                        QtCore.QPointF(
                            space_size * j + distance_from_edge,
                            space_size * i * np.sqrt(3) + distance_from_edge))
                    self.scenePlayerA.addItem(self.board.pieces[i][j])

                    if self.board.pieces[i][j].value != 1:
                        font = QtGui.QFont()
                        font.setPixelSize(font_size)
                        font.setBold(True)
                        text = QtWidgets.QGraphicsTextItem()
                        text.setPlainText(str(self.board.pieces[i][j].value))
                        text.setFont(font)
                        text.setPos(
                            QtCore.QPointF(
                                space_size * j + distance_from_edge -
                                text.boundingRect().size().width() / 2,
                                space_size * i * np.sqrt(3) +
                                distance_from_edge -
                                text.boundingRect().size().height() / 2))
                        self.scenePlayerA.addItem(text)
コード例 #12
0
ファイル: node_base.py プロジェクト: kurtontheway/NodeGraphQt
    def add_output(self, name='output', multi_port=False, display_name=True):
        """
        Args:
            name (str): name for the port.
            multi_port (bool): allow multiple connections.
            display_name (bool): display the port name. 

        Returns:
            PortItem: output item widget
        """
        port = PortItem(self)
        port.name = name
        port.port_type = OUT_PORT
        port.multi_connection = multi_port
        port.display_name = display_name
        text = QtWidgets.QGraphicsTextItem(port.name, self)
        text.font().setPointSize(8)
        text.setFont(text.font())
        text.setVisible(display_name)
        self._output_text_items[port] = text
        self._output_items.append(port)
        if self.scene():
            self.post_init()
        return port
コード例 #13
0
ファイル: Plots.py プロジェクト: riskey95/HollowRC
    def plot_all(self, section):
        # original way of plotting all
        self.section = section
        self.clear_scene()

        # unpack geometry properties
        X = self.section.get_X()
        Y = self.section.get_Y()
        T = self.section.get_thick()
        centreX, centreY = self.section.get_centre()
        wallAngles = self.section.get_angles()

        # connect itemChange signal with method
        # scene.changed.connect(self.node_moved)
        # self.graphicsViewGeometry.scene().changed.connect(self.node_moved)
        # scene.blockSignals(True)
        # self.graphicsViewGeometry.blockSignals(True)

        # Styles
        bold_pencil = QtGui.QPen(QtCore.Qt.DashLine)
        bold_pencil.setColor(QtCore.Qt.black)
        bold_pencil.setWidth(10)
        no_pencil = QtGui.QPen(QtCore.Qt.NoPen)
        thin_pencil = QtGui.QPen(QtCore.Qt.black)  # create a black pen
        blue_fill = QtGui.QBrush(QtCore.Qt.blue)  # create a blue brush
        grey_fill = QtGui.QBrush(
            QtCore.Qt.lightGray)  # create a light gray brush

        font = QtGui.QFont()
        font.setPixelSize(120)
        font.setBold(False)
        font.setFamily("Calibri")

        # Initiate item lists
        shade_rects = []
        centre_lines = []
        node_circles = []
        # node_rects = []
        node_texts = []

        # Loop over geometry nodes to preb. for geometry plots
        for i in range(len(X)):
            X1, Y1 = X[i], Y[i]  # start node
            if i + 1 == len(X):  # if last node
                X2, Y2 = X[0], Y[0]  # end node
            else:
                X2, Y2 = X[i + 1], Y[i + 1]

            # prep. shaded geometry Periphery
            PX1 = X1 + T[i] / 2 * math.sin(-wallAngles[i])
            PY1 = Y1 + T[i] / 2 * math.cos(-wallAngles[i])
            PX2 = X1 - T[i] / 2 * math.sin(-wallAngles[i])
            PY2 = Y1 - T[i] / 2 * math.cos(-wallAngles[i])
            PX3 = X2 - T[i] / 2 * math.sin(-wallAngles[i])
            PY3 = Y2 - T[i] / 2 * math.cos(-wallAngles[i])
            PX4 = X2 + T[i] / 2 * math.sin(-wallAngles[i])
            PY4 = Y2 + T[i] / 2 * math.cos(-wallAngles[i])
            rect = QtGui.QPolygonF()
            rect.append(QtCore.QPointF(PX1, -PY1))
            rect.append(QtCore.QPointF(PX2, -PY2))
            rect.append(QtCore.QPointF(PX3, -PY3))
            rect.append(QtCore.QPointF(PX4, -PY4))
            shade_rects.append(rect)

            # # add outline on top
            # scene.addLine(QtCore.QLineF(PX1, -PY1, PX2, -PY2), thin_pencil)
            # scene.addLine(QtCore.QLineF(PX2, -PY2, PX3, -PY3), thin_pencil)
            # scene.addLine(QtCore.QLineF(PX3, -PY3, PX4, -PY4), thin_pencil)
            # scene.addLine(QtCore.QLineF(PX4, -PY4, PX1, -PY1), thin_pencil)

            # prep. centre line
            line = QtCore.QLineF(X1, -Y1, X2, -Y2)  # x pos. right, y pos. down
            centre_lines.append(line)

            # preb. node circles
            radi = 0.01 * max([max(X) - min(X),
                               max(Y) - min(Y)])  # radius of node circles
            # circle = QtWidgets.QGraphicsEllipseItem(X1 - radi, -(Y1 + radi), radi * 2.0, radi * 2.0)
            # circle = MyEllipse(X1 - radi, -(Y1 + radi), radi * 2.0, radi * 2.0, self, self.section, i)
            circle = MyEllipse(X1 - radi, -(Y1 + radi), radi * 2.0, radi * 2.0)
            circle.setAcceptHoverEvents(True)
            circle.set_wall_id(i)

            circle.setPen(thin_pencil)
            circle.setBrush(blue_fill)
            circle.node_moved.connect(
                self.update_section
            )  # call update_section method if a node_moved signal is received
            # circle.setZValue(10)  # higher Z values will always be drawn on top of lower Z values
            node_circles.append(circle)

            # preb. node texts
            point = QtCore.QPointF(X1, -Y1)
            text = QtWidgets.QGraphicsTextItem()
            text.setPos(point)
            text.setFont(font)
            text.setPlainText("Node " + str(i + 1))
            # text.setZValue(8)  # higher Z values will always be drawn on top of lower Z values
            node_texts.append(text)

        # plot the shaded rectangles
        for rect in shade_rects:
            self.scene.addPolygon(rect, pen=no_pencil, brush=grey_fill)

        # plot centre lines
        for line in centre_lines:
            self.scene.addLine(line, bold_pencil)

        # plot node circles
        for circle in node_circles:
            self.scene.addItem(circle)

        # plot node texts
        for text in node_texts:
            self.scene.addItem(text)

        # plot centre text
        point = QtCore.QPointF(centreX, -centreY)
        text = QtWidgets.QGraphicsTextItem()
        text.setPlainText("CG")
        text.setFont(font)
        text.setPos(point)
        self.scene.addItem(text)

        # fit view to make sure that QGraphics view have no scrollbars
        self.fitInView(self.scene.sceneRect(), QtCore.Qt.KeepAspectRatio)
        self.scene.mousePressEvent = self.scene_mousePressEvent  # overrule QGraphicsSceneEvent