0
我试图开发一个GUI,允许在PlotWidget中跟踪鼠标坐标,并在主窗口中的其他地方显示标签。我曾多次尝试模拟pyqtgraph文档中的十字准线示例,但未能同意执行此操作。难度的一部分是我无法理解如何访问我可以在QtDesigner中启用的鼠标跟踪。在pyqtgraph中显示坐标?
我试图使用:
proxy = pg.SignalProxy(Plotted.scene().sigMouseMoved, rateLimit=60, slot=mouseMoved)
Plotted.scene().sigMouseMoved.connect(mouseMoved)
不过,我不太明白是什么使得在实时此“更新”,也不是在什么水平,我应该有这样的说法。
def mouseMoved(evt):
pos = evt[0]
if Plotted.sceneBoundingRect().contains(pos):
mousePoint = vb.mapSceneToView(pos)
index = int(mousePoint.x())
if index > 0 and index < len(x):
mousecoordinatesdisplay.setText("<span style='font-size: 12pt'>x=%0.1f, <span style='color: red'>y1=%0.1f</span>" % (mousePoint.x(), y[index], data2[index]))
vLine.setPos(mousePoint.x())
hLine.setPos(mousePoint.y())
部分代码是在Ui_MainWindow类中,还是在它之外?
我有一段时间没有使用过PyQtGraph,但你似乎在重复你的连接。 'SignalProxy'应该已经等同于'... .sigMouseMoved.connect(...)'。此外,鼠标跟踪应该发生在pyqtgraph图部件中。我不认为你在QtDesigner上激活的其他选项存在任何关系。这种工作方式可能是任何SIGNAL/SLOT工作的方式。每次移动鼠标时SignalProxy都会发送一个信号,并运行您为连接实施的任何方法。这不是实时的,只能在鼠标移动时才启动。 – armatita
是的,这似乎是正确的。但是,我无法正确写入“更新程序”,因此无法连接到信号/插槽输出端(我只能在移动鼠标时才能确认这一点),这就是当我收到错误信息时)更新代码中的标签? – Jmegan042
显然你在移动鼠标时正在访问该方法。它只是在事后发生(可能在连接的方法内)。什么是错误信息?究竟哪部分代码崩溃? – armatita