ich habe ein Pythonskript implementiert das während der Laufzeit auf der Konsole Text ausgibt. Nun habe ich eine GUI in Qt auf der durch Klicken des "StartTest"-Buttons das Pythonskript via QProcess gestartet wird. Das funktioniert auch soweit alles gut. Ich möchte jedoch die einzelnen Ausgaben des Skripts während der Laufzeit abfangen können und nicht erst am Ende des Prozesses die gesamte Ausgabe erhalten. Gibt es eine Möglichkeit während der Prozess läuft und im Pythonskript ein print ausgeführt wird, diese Ausgabe direkt abzufangen oder muss ich immer warten bis der Prozess abgearbeitet wurde und kann dann einmal auf die gesamte Ausgabe zugreifen ? Ich hoffe ich konnte das Problem erklären.
Code: Alles auswählen
Controller::Controller(QObject *parent) : QObject(parent)
{
m_ptGUI = new GUI();
m_ptProcess = new QProcess();
// Testroutine
QObject::connect(m_ptGUI->getPushButtonStartTest(),SIGNAL(clicked()),this,SLOT(startTest()));
// Prozess
connect (m_ptProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(getProcessOutput()));
connect (m_ptProcess, SIGNAL(readyReadStandardError()), this, SLOT(getProcessError()));
}
void Controller::startTest()
{
m_ptProcess->setWorkingDirectory("P:\\Test\\Scripts\\");
m_ptProcess->start("python",QStringList() << "formTest.py" << "-ap" << "P:\\Test\\Application-vc80-ugd.dll" << "-lf" << "FormLogic.dll" << "-rfp" << "P:\\Test\\ReferenceFiles\\*.*");
}
void Controller::getProcessOutput()
{
qDebug() << "printOutput";
QByteArray a = m_ptProcess->readAllStandardOutput();
qDebug() << a;
m_ptGUI->getTextEditProtocol()->setText(a);
}
void Controller::getProcessError()
{
qDebug() << "ERROR";
qDebug() << m_ptProcess->readAllStandardError();
}