Python pyqtgraph.InfiniteLine() Examples
The following are 30
code examples of pyqtgraph.InfiniteLine().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
pyqtgraph
, or try the search function
.
Example #1
Source File: AttributeCharts.py From qgisSpaceSyntaxToolkit with GNU General Public License v3.0 | 6 votes |
def __init__(self, iface, plot): QObject.__init__(self) self.iface = iface self.plot = plot self.add_selection = False self.just_selected = False self.show_lines = True if has_pyqtgraph: self.plot.setClipToView(True) self.plot.enableAutoRange(enable=True) self.hist_selection = pg.PlotCurveItem() self.scatter_selection = [] self.scatter = pg.ScatterPlotItem() self.scatter_points = {} self.region = pg.LinearRegionItem() #self.selected_points = [] self.selected_points = pg.ScatterPlotItem() self.regress_line = pg.InfiniteLine() #self.roi = None #---- # Histogram functions
Example #2
Source File: curves.py From pymeasure with MIT License | 6 votes |
def __init__(self, plot, pen=None): """ Initiates the crosshars onto a plot given the pen style. Example pen: pen=pg.mkPen(color='#AAAAAA', style=QtCore.Qt.DashLine) """ super().__init__() self.vertical = pg.InfiniteLine(angle=90, movable=False, pen=pen) self.horizontal = pg.InfiniteLine(angle=0, movable=False, pen=pen) plot.addItem(self.vertical, ignoreBounds=True) plot.addItem(self.horizontal, ignoreBounds=True) self.position = None self.proxy = pg.SignalProxy(plot.scene().sigMouseMoved, rateLimit=60, slot=self.mouseMoved) self.plot = plot
Example #3
Source File: uiCrosshair.py From InplusTrader_Linux with MIT License | 6 votes |
def __init__(self,parent): """Constructor""" self.__view = parent super(Crosshair, self).__init__() self.__vLine = pg.InfiniteLine(angle=90, movable=False) self.__hLine = pg.InfiniteLine(angle=0, movable=False) self.__textPrice = pg.TextItem('price') self.__textDate = pg.TextItem('date') #mid 在y轴动态跟随最新价显示最新价和最新时间 self.__textLastPrice = pg.TextItem('lastTickPrice') view = self.__view view.addItem(self.__textDate, ignoreBounds=True) view.addItem(self.__textPrice, ignoreBounds=True) view.addItem(self.__vLine, ignoreBounds=True) view.addItem(self.__hLine, ignoreBounds=True) view.addItem(self.__textLastPrice, ignoreBounds=True) self.proxy = pg.SignalProxy(view.scene().sigMouseMoved, rateLimit=60, slot=self.__mouseMoved) #----------------------------------------------------------------------
Example #4
Source File: candle_demo.py From Python-CTPAPI with MIT License | 6 votes |
def _init_line(self) -> None: """ Create line objects. """ self._v_lines: Dict[str, pg.InfiniteLine] = {} self._h_lines: Dict[str, pg.InfiniteLine] = {} self._views: Dict[str, pg.ViewBox] = {} pen = pg.mkPen(WHITE_COLOR) for plot_name, plot in self._plots.items(): v_line = pg.InfiniteLine(angle=90, movable=False, pen=pen) h_line = pg.InfiniteLine(angle=0, movable=False, pen=pen) view = plot.getViewBox() for line in [v_line, h_line]: line.setZValue(0) line.hide() view.addItem(line) self._v_lines[plot_name] = v_line self._h_lines[plot_name] = h_line self._views[plot_name] = view
Example #5
Source File: base.py From kite with GNU General Public License v3.0 | 6 votes |
def __init__(self, plot): pg.HistogramLUTWidget.__init__(self, image=plot.image) self._plot = plot self.prev_levels = None self.symmetric_colormap = True zero_marker = pg.InfiniteLine( pos=0, angle=0, pen='w', movable=False) zero_marker.setValue(0.) zero_marker.setZValue(1000) self.vb.addItem(zero_marker) self.axis.setLabel('Displacement / m') # self.plot.rotate(-90) # self.layout.rotate(90) # self.gradient.setOrientation('bottom') self.setSymColormap() self._plot.image.sigImageChanged.connect(self.imageChanged) self.sigLevelsChanged.connect(self.symmetricLevels) # self.isoCurveControl()
Example #6
Source File: test_GraphicsItem.py From tf-pose with Apache License 2.0 | 6 votes |
def test_getViewWidget_deleted(): view = pg.PlotWidget() item = pg.InfiniteLine() view.addItem(item) assert item.getViewWidget() is view # Arrange to have Qt automatically delete the view widget obj = pg.QtGui.QWidget() view.setParent(obj) del obj gc.collect() assert not pg.Qt.isQObjectAlive(view) assert item.getViewWidget() is None #if __name__ == '__main__': #view = pg.PlotItem() #vref = weakref.ref(view) #item = pg.InfiniteLine() #view.addItem(item) #del view #gc.collect()
Example #7
Source File: test_GraphicsItem.py From soapy with GNU General Public License v3.0 | 6 votes |
def test_getViewWidget_deleted(): view = pg.PlotWidget() item = pg.InfiniteLine() view.addItem(item) assert item.getViewWidget() is view # Arrange to have Qt automatically delete the view widget obj = pg.QtGui.QWidget() view.setParent(obj) del obj gc.collect() assert not pg.Qt.isQObjectAlive(view) assert item.getViewWidget() is None #if __name__ == '__main__': #view = pg.PlotItem() #vref = weakref.ref(view) #item = pg.InfiniteLine() #view.addItem(item) #del view #gc.collect()
Example #8
Source File: __init__.py From finplot with MIT License | 5 votes |
def __init__(self, ax, color): self.ax = ax self.x = 0 self.y = 0 self.clamp_x = 0 self.clamp_y = 0 self.infos = [] pen = pg.mkPen(color=color, style=QtCore.Qt.CustomDashLine, dash=[7, 7]) self.vline = pg.InfiniteLine(angle=90, movable=False, pen=pen) self.hline = pg.InfiniteLine(angle=0, movable=False, pen=pen) self.xtext = pg.TextItem(color=color, anchor=(0,1)) self.ytext = pg.TextItem(color=color, anchor=(0,0)) self.vline.setZValue(50) self.hline.setZValue(50) self.xtext.setZValue(50) self.ytext.setZValue(50) ax.addItem(self.vline, ignoreBounds=True) ax.addItem(self.hline, ignoreBounds=True) ax.addItem(self.xtext, ignoreBounds=True) ax.addItem(self.ytext, ignoreBounds=True)
Example #9
Source File: OrthoImageItem.py From rapidtide with Apache License 2.0 | 5 votes |
def newViewWindow(view, xdim, ydim, left, top, impixpervoxx, impixpervoxy, imgsize, enableMouse=False): theviewbox = view.addViewBox(enableMouse=enableMouse, enableMenu=False, lockAspect=1.0) theviewbox.setAspectLocked() theviewbox.setRange(QtCore.QRectF(0, 0, imgsize, imgsize), padding=0., disableAutoRange=True) theviewbox.setBackgroundColor([50, 50, 50]) theviewfgwin = pg.ImageItem() theviewbox.addItem(theviewfgwin) theviewfgwin.setZValue(10) theviewfgwin.translate(left, top) theviewfgwin.scale(impixpervoxx, impixpervoxy) theviewbgwin = pg.ImageItem() theviewbox.addItem(theviewbgwin) theviewbgwin.setZValue(0) theviewbgwin.translate(left, top) theviewbgwin.scale(impixpervoxx, impixpervoxy) theviewvLine = pg.InfiniteLine(angle=90, movable=False, pen='g') theviewvLine.setZValue(20) theviewbox.addItem(theviewvLine) theviewhLine = pg.InfiniteLine(angle=0, movable=False, pen='g') theviewhLine.setZValue(20) theviewbox.addItem(theviewhLine) return theviewfgwin, theviewbgwin, theviewvLine, theviewhLine, theviewbox
Example #10
Source File: AttributeCharts.py From qgisSpaceSyntaxToolkit with GNU General Public License v3.0 | 5 votes |
def drawScatterplot(self, xvalues, xmin, xmax, yvalues, ymin, ymax, slope, intercept, ids, symbols=None): # plot the chart if has_pyqtgraph: self.scatter = pg.ScatterPlotItem() self.plot.clear() # each point takes the colour of the map if symbols: points = [] for i, id in enumerate(ids): x = xvalues[i] y = yvalues[i] symb = symbols[i] points.append({'pos': (x,y), 'data': id, 'size': 3, 'pen': pg.mkPen(None), 'brush': symb}) self.scatter.addPoints(points) else: self.scatter.addPoints(x=xvalues, y=yvalues, data=ids, size=3, pen=pg.mkPen(None), brush=pg.mkBrush(235, 235, 235, 255)) # selection by direct click self.scatter.sigClicked.connect(self.changedScatterplotSelection) self.plot.addItem(self.scatter) # add the regression line self.regress_line = pg.InfiniteLine() self.regress_line.setAngle(atan(slope/1) * 180 / 3.1459) self.regress_line.setValue((0,intercept)) self.regress_line.setPen(color='b', width=1) if self.show_lines: self.plot.addItem(self.regress_line) # newfeature: add the selection tool #self.roi = pg.PolyLineROI([[xmin, ymin],[xmax, ymin],[xmax, ymax],[xmin, ymax]], closed=True) #self.roi.sigRegionChangeFinished.connect(self.changedScatterPlotSelection) #self.plot.addItem(self.roi) #self.plot.disableAutoRange('xy') # allow selection of items in chart and selecting them on the map
Example #11
Source File: OWDifferentialExpression.py From orange3-bioinformatics with GNU General Public License v3.0 | 5 votes |
def __init__(self, parent=None, **kwargs): pg.PlotWidget.__init__(self, parent, **kwargs) self.getAxis("bottom").setLabel("Score") self.getAxis("left").setLabel("Counts") self.__data = None self.__histcurve = None self.__mode = Histogram.NoSelection self.__min = 0 self.__max = 0 def makeline(pos): pen = QPen(Qt.darkGray, 1) pen.setCosmetic(True) line = InfiniteLine(angle=90, pos=pos, pen=pen, movable=True) line.setCursor(Qt.SizeHorCursor) return line self.__cuthigh = makeline(self.__max) self.__cuthigh.sigPositionChanged.connect(self.__on_cuthigh_changed) self.__cuthigh.sigPositionChangeFinished.connect(self.selectionEdited) self.__cutlow = makeline(self.__min) self.__cutlow.sigPositionChanged.connect(self.__on_cutlow_changed) self.__cutlow.sigPositionChangeFinished.connect(self.selectionEdited) brush = pg.mkBrush((200, 200, 200, 180)) self.__taillow = pg.PlotCurveItem(fillLevel=0, brush=brush, pen=QPen(Qt.NoPen)) self.__taillow.setVisible(False) self.__tailhigh = pg.PlotCurveItem(fillLevel=0, brush=brush, pen=QPen(Qt.NoPen)) self.__tailhigh.setVisible(False)
Example #12
Source File: test_GraphicsItem.py From soapy with GNU General Public License v3.0 | 5 votes |
def test_getViewWidget(): view = pg.PlotWidget() vref = weakref.ref(view) item = pg.InfiniteLine() view.addItem(item) assert item.getViewWidget() is view del view gc.collect() assert vref() is None assert item.getViewWidget() is None
Example #13
Source File: test_InfiniteLine.py From soapy with GNU General Public License v3.0 | 5 votes |
def test_InfiniteLine(): # Test basic InfiniteLine API plt = pg.plot() plt.setXRange(-10, 10) plt.setYRange(-10, 10) plt.resize(600, 600) # seemingly arbitrary requirements; might need longer wait time for some platforms.. QtTest.QTest.qWaitForWindowShown(plt) QtTest.QTest.qWait(100) vline = plt.addLine(x=1) assert vline.angle == 90 br = vline.mapToView(QtGui.QPolygonF(vline.boundingRect())) assert br.containsPoint(pg.Point(1, 5), QtCore.Qt.OddEvenFill) assert not br.containsPoint(pg.Point(5, 0), QtCore.Qt.OddEvenFill) hline = plt.addLine(y=0) assert hline.angle == 0 assert hline.boundingRect().contains(pg.Point(5, 0)) assert not hline.boundingRect().contains(pg.Point(0, 5)) vline.setValue(2) assert vline.value() == 2 vline.setPos(pg.Point(4, -5)) assert vline.value() == 4 oline = pg.InfiniteLine(angle=30) plt.addItem(oline) oline.setPos(pg.Point(1, -1)) assert oline.angle == 30 assert oline.pos() == pg.Point(1, -1) assert oline.value() == [1, -1] # test bounding rect for oblique line br = oline.mapToScene(oline.boundingRect()) pos = oline.mapToScene(pg.Point(2, 0)) assert br.containsPoint(pos, QtCore.Qt.OddEvenFill) px = pg.Point(-0.5, -1.0 / 3**0.5) assert br.containsPoint(pos + 5 * px, QtCore.Qt.OddEvenFill) assert not br.containsPoint(pos + 7 * px, QtCore.Qt.OddEvenFill)
Example #14
Source File: guiContainer.py From wavePicker with GNU General Public License v2.0 | 5 votes |
def getPickLineItem(self, channel, forceNew=False): ''' Function returns an pyqtgraph.InfiniteLine for plotting through Channel() ''' self.channel = channel if self.pickLineItem is not None and not forceNew: return self.pickLineItem self.pickLineItem = pg.InfiniteLine() pos = (self.time - channel.tr.stats.starttime) / channel.tr.stats.delta self.pickLineItem.setValue(pos) self.pickLineItem.setPen(color=self.phase.color, width=1) #self.pickLineItem.setMovable(True) #self.pickLineItem.setHoverPen(alpha=.3, width=10, color='w') return self.pickLineItem
Example #15
Source File: lineplot1d.py From argos with GNU General Public License v3.0 | 5 votes |
def __init__(self, collector, parent=None): """ Constructor. See AbstractInspector constructor for parameters. """ super(PgLinePlot1d, self).__init__(collector, parent=parent) # The sliced array is kept in memory. This may be different per inspector, e.g. 3D # inspectors may decide that this uses to much memory. The slice is therefor not stored # in the collector. self.slicedArray = None self.graphicsLayoutWidget = pg.GraphicsLayoutWidget() self.contentsLayout.addWidget(self.graphicsLayoutWidget) self.titleLabel = self.graphicsLayoutWidget.addLabel('<plot title goes here>', 0, 0) self.plotItem = ArgosPgPlotItem() self.viewBox = self.plotItem.getViewBox() self.graphicsLayoutWidget.addItem(self.plotItem, 1, 0) # Probe probePen = pg.mkPen("#BFBFBF") probeShadowPen = pg.mkPen("#00000064", width=3) self.crossLineVerShadow = pg.InfiniteLine(angle=90, movable=False, pen=probeShadowPen) self.crossLineVertical = pg.InfiniteLine(angle=90, movable=False, pen=probePen) self.probeDataItem = pg.PlotDataItem(symbolPen=probePen) self.probeLabel = self.graphicsLayoutWidget.addLabel('', 2, 0, justify='left') # Configuration tree self._config = PgLinePlot1dCti(pgLinePlot1d=self, nodeName='1D line plot') # Connect signals # Based mouseMoved on crosshair.py from the PyQtGraph examples directory. # I did not use the SignalProxy because I did not see any difference. self.plotItem.scene().sigMouseMoved.connect(self.mouseMoved)
Example #16
Source File: uiKLine.py From uiKLine with MIT License | 5 votes |
def initplotKline(self): """初始化K线子图以及指标子图""" self.pwKL = self.makePI('_'.join([self.windowId,'PlotKL'])) self.candle = CandlestickItem(self.listBar) self.pwKL.addItem(self.candle) self.KLINEOI_CLOSE = pg.PlotCurveItem(pen=({'color': "w", 'width': 1})) self.pwKL.addItem(self.KLINEOI_CLOSE) self.KLINEOI_CLOSE.hide() self.MA_SHORTOI = pg.PlotCurveItem(pen=({'color': "r", 'width': 1})) self.pwKL.addItem(self.MA_SHORTOI) self.MA_SHORTOI.hide() self.MA_LONGOI = pg.PlotCurveItem(pen=({'color': "r", 'width': 1,'dash':[3, 3, 3, 3]})) self.pwKL.addItem(self.MA_LONGOI) self.MA_LONGOI.hide() self.start_date_Line = pg.InfiniteLine(angle=90, movable=False,pen=({'color': [255, 255, 255, 100], 'width': 0.5})) self.pwKL.addItem(self.start_date_Line) self.end_date_Line = pg.InfiniteLine(angle=90,movable=False,pen=({'color': [255, 255, 0, 100], 'width': 0.5})) self.pwKL.addItem(self.end_date_Line) self.pwKL.setMinimumHeight(350) self.pwKL.setXLink('_'.join([self.windowId,'PlotOI'])) self.pwKL.hideAxis('bottom') self.lay_KL.nextRow() self.lay_KL.addItem(self.pwKL) #----------------------------------------------------------------------
Example #17
Source File: ReceiveAndPlot.py From liblsl-Python with MIT License | 5 votes |
def pull_and_plot(self, plot_time, plt): # TODO: purge old markers strings, timestamps = self.inlet.pull_chunk(0) if timestamps: for string, ts in zip(strings, timestamps): plt.addItem(pg.InfiniteLine(ts, angle=90, movable=False, label=string[0]))
Example #18
Source File: relativity.py From qgisSpaceSyntaxToolkit with GNU General Public License v3.0 | 5 votes |
def spaceline(self): if self._spaceline is None: self._spaceline = pg.InfiniteLine() self._spaceline.setPen(self.clock.pen) return self._spaceline
Example #19
Source File: plot.py From qspectrumanalyzer with GNU General Public License v3.0 | 5 votes |
def create_plot(self): """Create main spectrum plot""" self.posLabel = self.layout.addLabel(row=0, col=0, justify="right") self.plot = self.layout.addPlot(row=1, col=0) self.plot.showGrid(x=True, y=True) self.plot.setLabel("left", "Power", units="dB") self.plot.setLabel("bottom", "Frequency", units="Hz") self.plot.setLimits(xMin=0) self.plot.showButtons() #self.plot.setDownsampling(mode="peak") #self.plot.setClipToView(True) self.create_baseline_curve() self.create_persistence_curves() self.create_average_curve() self.create_peak_hold_min_curve() self.create_peak_hold_max_curve() self.create_main_curve() # Create crosshair self.vLine = pg.InfiniteLine(angle=90, movable=False) self.vLine.setZValue(1000) self.hLine = pg.InfiniteLine(angle=0, movable=False) self.vLine.setZValue(1000) self.plot.addItem(self.vLine, ignoreBounds=True) self.plot.addItem(self.hLine, ignoreBounds=True) self.mouseProxy = pg.SignalProxy(self.plot.scene().sigMouseMoved, rateLimit=60, slot=self.mouse_moved)
Example #20
Source File: multiplot.py From kite with GNU General Public License v3.0 | 5 votes |
def __init__(self): pg.HistogramLUTWidget.__init__(self, image=None) self.plots = [] self.axis.setLabel('Displacement / m') zero_marker = pg.InfiniteLine( pos=0, angle=0, pen='w', movable=False) zero_marker.setValue(0.) zero_marker.setZValue(1000) self.vb.addItem(zero_marker) self.axis.setLabel('Displacement / m') self.setSymColormap()
Example #21
Source File: base.py From kite with GNU General Public License v3.0 | 5 votes |
def isoCurveControl(self): iso_ctrl = pg.InfiniteLine( pos=0, angle=0, pen='g', movable=True) iso_ctrl.setValue(0.) iso_ctrl.setZValue(1000) def isolineChange(): self._plot.iso.setLevel(iso_ctrl.value()) iso_ctrl.sigDragged.connect(isolineChange) self.vb.addItem(iso_ctrl)
Example #22
Source File: tab_covariance.py From kite with GNU General Public License v3.0 | 5 votes |
def __init__(self, *args, **kwargs): pg.InfiniteLine.__init__(self, *args, **kwargs) self.setCursor(QtCore.Qt.SizeVerCursor)
Example #23
Source File: tab_covariance.py From kite with GNU General Public License v3.0 | 5 votes |
def __init__(self, *args, **kwargs): pg.InfiniteLine.__init__(self, *args, **kwargs) self.setCursor(QtCore.Qt.SizeVerCursor)
Example #24
Source File: timeserieswidget.py From dunya-desktop with GNU General Public License v3.0 | 5 votes |
def add_tonic(self, values): """ Adds tonic lines on the pitch plot. :param values: (list or numpy array) A sequence of tonic values in Hz. """ # label options for the tonic values on the tonic line label_opts = {'position': 0.1, 'color': (200, 200, 100), 'fill': (200, 200, 200, 50), 'movable': True} if not hasattr(self, 'tonic_lines'): self.tonic_lines = [] for value in values: # create infinite line t_line = pg.InfiniteLine(pos=value, movable=False, angle=0, label='Tonic=%.2f' % value, labelOpts=label_opts) # take tonic lines in a list to remove in the future self.tonic_lines.append(t_line) self.zoom_selection.addItem(t_line) # add item to zoom selection
Example #25
Source File: test_InfiniteLine.py From tf-pose with Apache License 2.0 | 5 votes |
def test_InfiniteLine(): # Test basic InfiniteLine API plt = pg.plot() plt.setXRange(-10, 10) plt.setYRange(-10, 10) plt.resize(600, 600) # seemingly arbitrary requirements; might need longer wait time for some platforms.. QtTest.QTest.qWaitForWindowShown(plt) QtTest.QTest.qWait(100) vline = plt.addLine(x=1) assert vline.angle == 90 br = vline.mapToView(QtGui.QPolygonF(vline.boundingRect())) assert br.containsPoint(pg.Point(1, 5), QtCore.Qt.OddEvenFill) assert not br.containsPoint(pg.Point(5, 0), QtCore.Qt.OddEvenFill) hline = plt.addLine(y=0) assert hline.angle == 0 assert hline.boundingRect().contains(pg.Point(5, 0)) assert not hline.boundingRect().contains(pg.Point(0, 5)) vline.setValue(2) assert vline.value() == 2 vline.setPos(pg.Point(4, -5)) assert vline.value() == 4 oline = pg.InfiniteLine(angle=30) plt.addItem(oline) oline.setPos(pg.Point(1, -1)) assert oline.angle == 30 assert oline.pos() == pg.Point(1, -1) assert oline.value() == [1, -1] # test bounding rect for oblique line br = oline.mapToScene(oline.boundingRect()) pos = oline.mapToScene(pg.Point(2, 0)) assert br.containsPoint(pos, QtCore.Qt.OddEvenFill) px = pg.Point(-0.5, -1.0 / 3**0.5) assert br.containsPoint(pos + 5 * px, QtCore.Qt.OddEvenFill) assert not br.containsPoint(pos + 7 * px, QtCore.Qt.OddEvenFill)
Example #26
Source File: test_GraphicsItem.py From tf-pose with Apache License 2.0 | 5 votes |
def test_getViewWidget(): view = pg.PlotWidget() vref = weakref.ref(view) item = pg.InfiniteLine() view.addItem(item) assert item.getViewWidget() is view del view gc.collect() assert vref() is None assert item.getViewWidget() is None
Example #27
Source File: relativity.py From tf-pose with Apache License 2.0 | 5 votes |
def reset(self): self.i = 1 #class Spaceline(pg.InfiniteLine): #def __init__(self, sim, frame): #self.sim = sim #self.frame = frame #pg.InfiniteLine.__init__(self) #self.setPen(sim.clocks[frame].pen) #def stepTo(self, t): #self.setAngle(0) #pass
Example #28
Source File: relativity.py From tf-pose with Apache License 2.0 | 5 votes |
def spaceline(self): if self._spaceline is None: self._spaceline = pg.InfiniteLine() self._spaceline.setPen(self.clock.pen) return self._spaceline
Example #29
Source File: relativity.py From qgisSpaceSyntaxToolkit with GNU General Public License v3.0 | 5 votes |
def reset(self): self.i = 1 #class Spaceline(pg.InfiniteLine): #def __init__(self, sim, frame): #self.sim = sim #self.frame = frame #pg.InfiniteLine.__init__(self) #self.setPen(sim.clocks[frame].pen) #def stepTo(self, t): #self.setAngle(0) #pass
Example #30
Source File: uiCrosshair.py From uiKLine with MIT License | 4 votes |
def __init__(self,parent,master): """Constructor""" self.__view = parent self.master = master super(Crosshair, self).__init__() self.xAxis = 0 self.yAxis = 0 self.datas = None self.yAxises = [0 for i in range(3)] self.leftX = [0 for i in range(3)] self.showHLine = [False for i in range(3)] self.textPrices = [pg.TextItem('',anchor=(1,1)) for i in range(3)] self.views = [parent.centralWidget.getItem(i+1,0) for i in range(3)] self.rects = [self.views[i].sceneBoundingRect() for i in range(3)] self.vLines = [pg.InfiniteLine(angle=90, movable=False) for i in range(3)] self.hLines = [pg.InfiniteLine(angle=0, movable=False) for i in range(3)] #mid 在y轴动态跟随最新价显示最新价和最新时间 self.__textDate = pg.TextItem('date',anchor=(1,1)) self.__textInfo = pg.TextItem('lastBarInfo') self.__textSig = pg.TextItem('lastSigInfo',anchor=(1,0)) self.__textSubSig = pg.TextItem('lastSubSigInfo',anchor=(1,0)) self.__textVolume = pg.TextItem('lastBarVolume',anchor=(1,0)) self.__textDate.setZValue(2) self.__textInfo.setZValue(2) self.__textSig.setZValue(2) self.__textSubSig.setZValue(2) self.__textVolume.setZValue(2) self.__textInfo.border = pg.mkPen(color=(230, 255, 0, 255), width=1.2) for i in range(3): self.textPrices[i].setZValue(2) self.vLines[i].setPos(0) self.hLines[i].setPos(0) self.vLines[i].setZValue(0) self.hLines[i].setZValue(0) self.views[i].addItem(self.vLines[i]) self.views[i].addItem(self.hLines[i]) self.views[i].addItem(self.textPrices[i]) self.views[0].addItem(self.__textInfo, ignoreBounds=True) self.views[0].addItem(self.__textSig, ignoreBounds=True) self.views[1].addItem(self.__textVolume, ignoreBounds=True) self.views[2].addItem(self.__textDate, ignoreBounds=True) self.views[2].addItem(self.__textSubSig, ignoreBounds=True) self.proxy = pg.SignalProxy(self.__view.scene().sigMouseMoved, rateLimit=360, slot=self.__mouseMoved) # 跨线程刷新界面支持 self.signal.connect(self.update) self.signalInfo.connect(self.plotInfo) #----------------------------------------------------------------------