1

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 に答える