def mouseMoved(self, evt):
pos = evt[0]
if self.plot.sceneBoundingRect().contains(pos):
mousePoint = self.plot.vb.mapSceneToView(pos)
posx, posy = mousePoint.x(), mousePoint.y()
labels = []
for a, vs in sorted(self.reports.items()):
for v in vs:
if isinstance(v, tuple) and len(v) == 2:
if v[0] == "x":
labels.append(("%0." + str(self.important_decimals[0]) + "f") % v[1])
continue
labels.append(str(v))
labels = " ".join(labels)
self.crosshair_hidden = bool(labels)
if self.location and not labels:
fs = "%0." + str(self.important_decimals[0]) + "f %0." + str(self.important_decimals[1]) + "f"
labels = fs % (posx, posy)
self.label.setText(labels, color=(0, 0, 0))
if self.curves and len(self.curves[0][0]): # need non-zero x axis!
cache = {}
bd = None
if self.markclosest and self.plot.vb.action != ZOOMING:
xpixel, ypixel = self.plot.vb.viewPixelSize()
distances = distancetocurves(self.curves[0], posx, posy, xpixel, ypixel, r=self.MOUSE_RADIUS,
cache=cache)
try:
mindi = np.nanargmin(distances)
if distances[mindi] < self.MOUSE_RADIUS:
bd = mindi
except ValueError: # if all distances are NaN
pass
if self.highlighted != bd:
QToolTip.hideText()
if self.highlighted is not None and bd is None:
self.highlighted = None
self.highlighted_curve.hide()
if bd is not None:
self.highlighted = bd
x = self.curves[0][0]
y = self.curves[0][1][self.highlighted]
self.highlighted_curve.setData(x=x, y=y)
self.highlighted_curve.show()
self.vLine.setPos(posx)
self.hLine.setPos(posy)
self.viewhelpers_show()
else:
self.viewhelpers_hide()
评论列表
文章目录