PyQtGraph PlotWidget:如何强制每次绘制(改变范围)进行“实时”绘图

4 投票
1 回答
5492 浏览
提问于 2025-04-18 00:55

我想让一个绘图小部件快速移动(从左到右),就像心电图一样。这里有个我想要的例子(不过他用的是PyQwt,这和我的项目不兼容,因为我用的是PySide而不是PyQt,而且我还想让X轴也从左到右移动):

在这里输入图片描述

但是,我不知道该怎么做。我可以绘制图形,我可以用以下方法让它从左到右移动:

 myPlotWidget.setXRange(0, 100)

然后

  myPlotWidget.setXRange(1, 101)

这让它看起来像是从左到右移动了(移动了1个单位),但我不知道怎么让它看起来更流畅和自动。我试着做了一个循环,像这样:

 for i in range(1000):
     myPlotWidget.setXRange(10+i, 100+i, update=True)

但是在循环过程中,图形并没有更新……图形只有在循环结束后才更新,所以我看不到它“从左到右移动”,我只能看到最终的结果。

有人能帮我吗?有没有办法让我强制在循环的1000次中重绘图形?

我最开始以为计算速度太快了,所以我试了这个

 for i in range(1000):
     myPlotWidget.setXRange(10+i, 100+i, update=True)
     time.sleep

但当然,这并没有奏效。

非常感谢你的帮助!

1 个回答

-1

在循环的最后,当它被更新时,你会看到类似 myPlotWidget.update()myPlotWidget.canvas.draw() 这样的代码,对吧?

只需把这个代码放到 for 循环里面。不过,如果你要绘制的数据量很大,这样做会变得很慢。

撰写回答