Как я могу получить запись в реальном времени из subprocess.popen с QGIS Plugin, QTimer? - PullRequest
0 голосов
/ 12 сентября 2018

Я давно запустил .bat файл

self.timer = QTimer(interval=1000)
try:
    process = subprocess.Popen(
       'C:/val/start.bat',
        shell=False,
        stdout=subprocess.PIPE
    )
    timerCallback = functools.partial(self.onTimer, msg=process.stdout)
    self.timer.timeout.connect(timerCallback)
    self.timer.start(1000)
except:
    self.dockwidget.plainTextEdit.appendPlainText("##############Error##############")

def onTimer(self, msg):
    line = msg.readline().decode('utf-8')
    self.dockwidget.plainTextEdit.appendPlainText(line)
    QgsMessageLog.logMessage(line, tag="Validating", level=QgsMessageLog.INFO)
    if line == "" or line is None:
        self.timer.stop()

Когда QGIS запускает плагин, QGIS приостанавливается подпроцессом.

Когда файл .bat завершен, QGIS работает.

Надеюсь, QGIS не остановится.

И я хочу получать результаты в QGIS в режиме реального времени во время процесса подпроцесса.

Как я могу это сделать ???

...