1

当我单击一个按钮时,我想在 graphicsLayoutWidget 中添加大约 200 个图。但是现在 gui 冻结了大约 10 秒。我怎样才能避免这种情况。

4

1 回答 1

2

这是 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 可以进一步提高性能

于 2013-10-25T16:04:56.667 回答