スクリプトに次のシーケンスを実装し、できるだけシンプルにしておきたい(可能な場合は明示的マルチスレッドを避ける)。pyqtgraph:ユーザーがroiオブジェクトを配置するまで、ipythonスクリプトを一時停止する最も簡単な方法
一部のデータを処理します。結果は、2D numpyのアレイである、(
import pyqtgraph as qt
後pyqt5を使用して)pw = pg.show(a)
を用いて表示a
a
を言う
例えば、円形のROIを定義
circ = pg.CircleROI([1024,1024],300) pw.addItem(circ)
( ROI座標が使用されています)
私の質問は次のとおりです:3と5の間のスクリプトでどのようにブレークを定義できますか?ユーザーがpyqtgraphがブロックされないように、4.を実行する時間があることを確認しますか?理想的には、ユーザーは、Enterキーを押すか、ボタンをクリックすることによって、適切な位置を確認します。
編集:スクリプトはIPythonでqt guiで実行されます。
Edit2:ここでは、IPythonで実行する完全なテストスクリプトを示します。私が欲しいのは、印刷出力が(slice(1024, 1174, None), slice(1024, 1174, None))
import numpy as np
import pyqtgraph as pg
a = np.array(range(2048**2)).reshape((2048,2048))
pw = pg.show(a)
circ = pg.CircleROI([1024,1024],300)
pw.addItem(circ)
roi = np.s_[int(circ.pos().x()):int(circ.pos().x()+circ.size().x()/2),\
int(circ.pos().y()):int(circ.pos().y()+circ.size().x()/2)]
print(roi)
これも私の最初の考えでした。しかし、 'raw_input'コマンドでもGUIがフリーズします。 Figureを手動で開く(つまり、 'raw_input'の前にあるすべての行を実行すると)、' raw_input'行を実行した時点で、私は円を動かすことができません。もう数字。 – Felix
これは私のipythonコンソールで正常に動作しました。スクリプトをテストに入れました。ipythonで 'import test'を実行しました – luddek
本当に、それはスタンドアロンのipythonで動作しますが、私が最初にテストした私のスパイダーIDEでは動作しません。しかし、スタンドアロン版では、このコードを実行した後に私は図を閉じることができません。とにかく、2番目のソリューションは完全に動作します、それは私が必要としていたものです! – Felix