1 つのボタンをクリックすると、graphicsLayoutWidget に約 200 のプロットを追加したいのですが、GUI が約 10 秒間フリーズします。どうすればこれを回避できますか。
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 に答える