编程语言
首页 > 编程语言> > c – Qt调用外部Python脚本

c – Qt调用外部Python脚本

作者:互联网

我正在尝试为我用Python编写的命令行工具编写一个GUI包装器.
有人建议我应该使用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小部件上显示任何内容.

任何帮助将不胜感激.

解决方法:

您是否尝试过以下方法:

>确保python在您的系统路径中
>将文档中所述的参数作为QStringList传递
>在测试时将readAllStandardOutput更改为readAll

void v_1::on_pushButton_clicked() 
{
    QProcess p;
    QStringList params;

    params << "script.py -arg1 arg1";
    p.start("python", params);
    p.waitForFinished(-1);
    QString p_stdout = p.readAll();
    ui->lineEdit->setText(p_stdout);
}

标签:qprocess,c,qt,qt4
来源: https://codeday.me/bug/20191006/1862836.html