def add_crosshair(plot, render_measurements, color=Qt.gray):
pen = mkPen(color=QColor(color), width=1)
vline = InfiniteLine(angle=90, movable=False, pen=pen)
hline = InfiniteLine(angle=0, movable=False, pen=pen)
plot.addItem(vline, ignoreBounds=True)
plot.addItem(hline, ignoreBounds=True)
current_coordinates = None
reference_coordinates = None
def do_render():
render_measurements(current_coordinates, reference_coordinates)
def update(pos):
nonlocal current_coordinates
if plot.sceneBoundingRect().contains(pos):
mouse_point = plot.getViewBox().mapSceneToView(pos)
current_coordinates = mouse_point.x(), mouse_point.y()
vline.setPos(mouse_point.x())
hline.setPos(mouse_point.y())
do_render()
def set_reference(ev):
nonlocal reference_coordinates
if ev.button() == Qt.LeftButton and current_coordinates is not None:
reference_coordinates = current_coordinates
do_render()
plot.scene().sigMouseMoved.connect(update)
plot.scene().sigMouseClicked.connect(set_reference)
评论列表
文章目录