python画十字_python - 如何在pyqtgraph中绘制十字线并绘制鼠标位置? - 堆栈内存溢出...

这篇博客介绍了如何在pyqtgraph中为图形添加十字准线,以及如何根据鼠标移动更新这些准线的位置。作者通过创建无限直线对象vLine和hLine来实现十字准线,并在mouseMoved事件中更新它们的位置,同时显示鼠标位置的坐标值。
摘要由CSDN通过智能技术生成

我是Python和pyqtgraph的新手。 我正在为各种信号的查看器工作。 目前,当我想在鼠标位置添加十字准线和文本标签时,我陷入了困境。 我正在使用GridLayout,因为稍后图形将与其他几个元素组合在一起。

我试图改编pyqtgraph示例的十字线/鼠标交互,但是除了pyqtgraph中的许多其他事情之外,我在mousemoved()之前不了解vb = signalgraph.vb的含义,并且脚本引发了NameError

from pyqtgraph.Qt import QtGui, QtCore

import numpy as np

import pyqtgraph as pg

#QtGui.QApplication.setGraphicsSystem('raster')

app = QtGui.QApplication([])

mainwindow = QtGui.QMainWindow()

mainwindow.setWindowTitle('pyqtgraph example: PlotWidget')

mainwindow.resize(1000,800)

cw = QtGui.QWidget()

mainwindow.setCentralWidget(cw)

gridlayout = QtGui.QGridLayout()

cw.setLayout(gridlayout)

# define plot windows

signalgraph = pg.PlotWidget(name='Signalgraph')

# set position and size of plot windows

gridlayout.addWidget(signalgraph,0,0)

mainwindow.show()

# sample data

x = [0,1,2,3,4,5,6,7,8,9,10]

y = [0,0,0,8,8,8,9,9,9,0,0]

# plot 1

curve = pg.PlotCurveItem(x,y[:-1],pen='w',stepMode=True)

signalgraph.addItem(curve)

#cross hair in signalgraph

vLine = pg.InfiniteLine(angle=90, movable=False)

hLine = pg.InfiniteLine(angle=0, movable=False)

signalgraph.addItem(vLine, ignoreBounds=True)

signalgraph.addItem(hLine, ignoreBounds=True)

# Here I am not sure what to do ...

vb = signalgraph.vb

##vb = pg.ViewBox()

def mouseMoved(evt):

pos = evt[0]

if signalgraph.sceneBoundingRect().contains(pos):

mousePoint = vb.mapSceneToView(pos)

index = int(mousePoint.x())

if index > 0 and index < len(x):

label.setText("x=%0.1f, y1=%0.1f" % (mousePoint.x(), y[index], data2[index]))

vLine.setPos(mousePoint.x())

hLine.setPos(mousePoint.y())

proxy = pg.SignalProxy(signalgraph.scene().sigMouseMoved, rateLimit=60, slot=mouseMoved)

signalgraph.scene().sigMouseMoved.connect(mouseMoved)

# Start Qt event loop unless running in interactive mode or using pyside.

if __name__ == '__main__':

import sys

if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):

QtGui.QApplication.instance().exec_()

非常感谢Michael

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值