[英]How to execute a python console using Qt on win10?
我正在尝试使用 QProcess 执行 python 控制台并在 QTextEdit 中显示控制台的内容。 以下是我的主要代码:
connect(&process, SIGNAL(readyReadStandardOutput()), this, SLOT(PrintStandardOutput()));
connect(&process, SIGNAL(started()), this, SLOT(Started()));
...
void Widget::PrintStandardOutput()
{
QString stdOtuput = QString::fromLocal8Bit(process.readAllStandardOutput());
ui->textEdit_Output->append(stdOtuput);
}
void Widget::Started()
{
ui->stateLabel->setText("Process started...");
}
我使用QProcess::start("python")
来启动一个新进程和QProcess::write()
来编写我的 python 代码,但是我在我的 QTextEdit 中看不到任何显示,顺便说一句,python 进程确实是根据到显示“进程已启动...”的 stateLabel。 如何让python输出显示在QTextEdit中? 谢谢。
尝试 :
connect(&process, SIGNAL(readyReadStandardOutput()), this, SLOT(PrintStandardOutput()));
connect(&process, SIGNAL(started()), this, SLOT(Started()));
process.setProcessChannelMode(QProcess::MergedChannels);
process.start(processToStart, arguments)
void Widget::PrintStandardOutput()
{
// Get the output
QString output;
if (process.waitForStarted(-1)) {
while(process.waitForReadyRead(-1)) {
output += process.readAll();
ui->textEdit_Output->append(output);
}
}
process.waitForFinished();
}
void Widget::Started()
{
ui->stateLabel->setText("Process started...");
}
setProcessChannelMode(QProcess::MergedChannels)将合并输出通道。 各种程序写入不同的输出。 有些使用错误输出进行正常记录,有些使用“标准”输出,有些两者兼而有之。 最好将它们合并。
readAll()读取目前可用的所有内容。
它被放入一个带有 waitForReadyRead(-1) 的循环中(-1 表示没有超时),它会阻塞直到可以读取某些内容。 这是为了确保实际读取所有内容。 在进程完成后简单地调用 readAll() 被证明是非常不可靠的(缓冲区可能已经是空的)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.