【问题标题】:PyQtGraph PlotWidget : how to force each draw (changing range) for "real time" plottingPyQtGraph PlotWidget:如何强制每次绘制(更改范围)以进行“实时”绘图
【发布时间】:2014-05-12 21:09:10
【问题描述】:

我正在尝试让 PlotWidget 快速移动(从左到右),就像它是心电图一样。这是我想要的一个例子(除了他使用 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

但它当然没有用。

非常感谢您的帮助!

【问题讨论】:

标签: python plot real-time pyqtgraph


【解决方案1】:

在循环结束时,当它被更新时,你有类似myPlotWidget.update()myPlotWidget.canvas.draw() 的东西,对吧?

只需将其移入 for 循环即可。但是,如果您尝试绘制大量数据,这会变慢。

【讨论】:

  • 否; QWidget.update() 仅安排 重绘以供以后使用。您必须调用 QApplication.processEvents() 或返回 Qt 事件循环。
  • Luke 是对的,非常感谢您的帮助。它与 QApplication.processEvents() 完美配合。您能否将其发布为问题的答案(而不是评论),以供将来可能遇到相同问题的人使用。我很高兴将其作为“有用的答案”进行检查:) 再次感谢您
猜你喜欢
  • 2015-04-21
  • 2019-02-02
  • 2019-04-01
  • 1970-01-01
  • 2019-04-26
  • 2019-07-24
  • 2017-05-31
  • 2011-03-31
  • 2018-10-26
相关资源
最近更新 更多