【发布时间】:2013-11-04 16:32:11
【问题描述】:
当我单击一个按钮时,我想在 graphicsLayoutWidget 中添加大约 200 个绘图。但是现在 gui 冻结了大约 10 秒。 我怎样才能避免这种情况。
【问题讨论】:
标签: pyqtgraph
当我单击一个按钮时,我想在 graphicsLayoutWidget 中添加大约 200 个绘图。但是现在 gui 冻结了大约 10 秒。 我怎样才能避免这种情况。
【问题讨论】:
标签: pyqtgraph
这是 pyqtgraph 的一个缺陷。
看起来大部分初始化时间都用于创建上下文菜单。 PlotItem.__init__ 和 ViewBox.__init__ 都具有“enableMenu”参数,但将它们设置为 False 只会阻止菜单出现并且不会阻止它们被创建。
因此,解决此问题的最简单方法是完全避免创建菜单,更好的方法是推迟菜单创建,直到用户右键单击绘图。您可以通过查看以下代码来尝试前一种解决方案:https://github.com/lcampagn/pyqtgraph/tree/deferred_menu
在该代码下,以下示例运行得更快:
import pyqtgraph as pg
w = pg.GraphicsWindow()
for i in range(20):
for j in range(20):
w.addPlot(enableMenu=False)
w.nextRow()
后一种解决方案需要进行更广泛的更改。通过避免显示 AxisItems 可以进一步提高性能
【讨论】: