Я хотел бы реализовать следующую последовательность в сценарии и сделать ее как можно более простой (т. е., если возможно, избежать явной многопоточности):
Обработать некоторые данные. Результатом является массив 2d numpy, скажем,
a
Показать
a
с помощьюpw = pg.show(a)
(послеimport pyqtgraph as qt
и с использованием pyqt5)Определите круговую область интереса, например. с помощью
circ = pg.CircleROI([1024,1024],300)
pw.addItem(circ)
Пользователь перемещает область интереса в соответствующее место
Считайте координаты области интереса, продолжите работу со сценарием (где используются координаты области интереса)
Мой вопрос: как я могу определить перерыв в сценарии между 3. и 5. таким образом, чтобы у пользователя было время сделать 4. таким образом, чтобы pyqtgraph не блокировался? В идеале пользователь должен подтвердить правильное положение области интереса, нажав клавишу ввода или кнопку.
Изменить: скрипт выполняется в IPython с графическим интерфейсом qt.
Edit2: вот полный тестовый скрипт, который нужно выполнить в IPython. Я хочу, чтобы пользователь мог перемещать круг до того, как roi будет оценен, т. Е. Чтобы вывод на печать отличался от (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)