Qt Calling External Python Script(Qt调用外部Python脚本)
本文介绍了Qt调用外部Python脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试为我的一个用Python编写的命令行工具编写一个图形用户界面包装。
有人建议我应该使用Qt。
下面是我的项目的.cpp文件:
#include "v_1.h"
#include "ui_v_1.h"
#include<QtCore/QFile>
#include<QtCore/QTextStream>
#include <QProcess>
#include <QPushButton>
v_1::v_1(QWidget *parent) :
QMainWindow(parent),ui(new Ui::v_1)
{
ui->setupUi(this);
}
v_1::~v_1()
{
delete ui;
}
void v_1::on_pushButton_clicked()
{
QProcess p;
p.start("python script -arg1 arg1");
p.waitForFinished(-1);
QString p_stdout = p.readAllStandardOutput();
ui->lineEdit->setText(p_stdout);
}
下面是我的项目的头文件:
#ifndef V_1_H
#define V_1_H
#include <QMainWindow>
namespace Ui {
class v_1;
}
class v_1 : public QMainWindow
{
Q_OBJECT
public:
explicit v_1(QWidget *parent = 0);
~v_1();
private slots:
void on_pushButton_clicked();
private:
Ui::v_1 *ui;
};
#endif // V_1_H
该UI文件只是一个Push Button和一个LineEdit小部件。
当按钮被点击时,我给它分配了一个槽。当我调用一些实用程序(如ls
或ps
)时,on_pushButton_clicked()
方法可以很好地工作,并且它会将这些命令的输出通过管道传输到LineEdit小部件,但当我尝试调用Python脚本时,它不会在LineEdit小部件上显示任何内容。
如有任何帮助,我们将不胜感激。
推荐答案
Hunor的回答也适用于我。但我没有使用进程ID。 我做到了:
void MainWindow::on_pushButton_clicked()
{
QString path = '/Somepath/mypath';
QString command("python");
QStringList params = QStringList() << "script.py";
QProcess *process = new QProcess();
process->startDetached(command, params, path);
process->waitForFinished();
process->close();
}
这篇关于Qt调用外部Python脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:Qt调用外部Python脚本
猜你喜欢
- 从父 CMakeLists.txt 覆盖 CMake 中的默认选项(...)值 2021-01-01
- 将 hdc 内容复制到位图 2022-09-04
- GDB 不显示函数名 2022-01-01
- 使用 __stdcall & 调用 DLLVS2013 中的 GetProcAddress() 2021-01-01
- 如何提取 __VA_ARGS__? 2022-01-01
- OpenGL 对象的 RAII 包装器 2021-01-01
- XML Schema 到 C++ 类 2022-01-01
- DoEvents 等效于 C++? 2021-01-01
- 哪个更快:if (bool) 或 if(int)? 2022-01-01
- 将函数的返回值分配给引用 C++? 2022-01-01