Могу ли я поделиться перекрестием с двумя графами в pyqtgraph (pyqt5) - PullRequest
0 голосов
/ 24 мая 2018

Я реализовал два графика в pyqt5 с pyqtgraph, и хочу поделиться курсором между двумя графиками.

У меня есть результат программы при следующем: enter image description here

И я хочу поделиться перекрестием, как: enter image description here

Может ли Pyqtgraph сделать это?Большое спасибо.

Ниже приведен мой код (обновление), он покажет 2 графика, а курсор будет позволять перемещаться только в графике 2.Тем не менее, я хочу, чтобы курсор мог перемещаться и получать данные из graph1 и graph2.

import sys

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg
from pyqtgraph import MultiPlotWidget


class GUI_create_main_window(QWidget):
    def __init__(self):
        super().__init__()

        main_layout = QVBoxLayout(self)

        self.plot1 = pg.PlotWidget()
        main_layout.addWidget(self.plot1)

        self. plot2 = pg.PlotWidget()
        main_layout.addWidget(self.plot2)

        self.draw_cursor()

        self.setLayout(main_layout) 
        self.show()

    #hair cross event    
    def eventFilter(self, source, event):
        try:
            if (event.type() == QtCore.QEvent.MouseMove and
                source is self.plot2.viewport()):
                pos = event.pos()
                if self.plot2.sceneBoundingRect().contains(pos):
                    mousePoint = self.vb.mapSceneToView(pos)
                    self.vLine.setPos(mousePoint.x())
                    self.hLine.setPos(mousePoint.y())

            return QtGui.QWidget.eventFilter(self, source, event)
        except Exception as e:
            traceback.print_exc()
            err = sys.exc_info()[1]
            print(str(err))

    def draw_cursor(self):
        #cross hair
        self.vLine = pg.InfiniteLine(angle=90, movable=False, pen=pg.mkPen('k', width=1))
        self.hLine = pg.InfiniteLine(angle=0, movable=False, pen=pg.mkPen('k', width=1), label='{value:0.1f}',
                                        labelOpts={'position':0.98, 'color': (200,0,0), 'movable': True, 'fill': (0, 0, 200, 100)})
        self.plot2.addItem(self.vLine, ignoreBounds=True)
        self.plot2.addItem(self.hLine, ignoreBounds=True)
        self.vb = self.plot2.plotItem.vb

        #set mouse event
        self.plot2.setMouseTracking(True)
        self.plot2.viewport().installEventFilter(self)

if __name__ == '__main__':
    pg.setConfigOption('background', 'w')
    pg.setConfigOption('foreground', 'k')

    app = QApplication(sys.argv)
    gui = GUI_create_main_window()
    currentExitCode = app.exec_()
...