如何使用QGIS插件QTimer从subprocess.popen获取实时日志?

时间:2018-09-12 04:44:46

标签: python plugins subprocess qgis

我已经运行了.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。

我该怎么做?

0 个答案:

没有答案