Qt Appel Externe Script Python
Je suis en train d'écrire une interface graphique de l'enveloppe pour l'un de mes outils de ligne de commande écrit en Python.
Il m'a été suggéré que je devrais utiliser Qt.
Ci-dessous est mon projet .fichier 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);
}
En dessous de mon projet est d'en-tête du fichier:
#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
Le fichier d'INTERFACE utilisateur est juste un Bouton-Poussoir et un LineEdit widget.
J'ai attribué le Bouton-Poussoir une fente quand il est cliqué. Le on_pushButton_clicked()
méthode fonctionne très bien quand je l'appelle certains services publics, comme les ls
ou ps
, et il canalise la sortie de ces commandes pour les LineEdit widget, mais lorsque j'essaie d'appeler un script Python, il ne pas me montrer quoi que ce soit sur le LineEdit widget.
Toute aide serait grandement appréciée.
QPRocess a retourne les valeurs pour waitForStarted, waitForFinished(), vous pouvez lire le stderr de sortie (analogue à la façon dont vous lire stdout), il y a QProcess::errorString(). Vérifiez les premiers à voir ce qui ne va pas.
OriginalL'auteur devoidfeast | 2013-02-28
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé le suivant:
OriginalL'auteur mAsT3RpEE
Pour moi le code ci-dessous travaillé:
chemin: vous pouvez définir votre propre chemin
commande: dans quel programme que vous souhaitez exécuter (dans ce cas, python)
params: le script que vous souhaitez exécuter
&processID est pour tuer le processus si la fenêtre est fermée
OriginalL'auteur Orbán Hunor
Hunor réponse a fonctionné pour moi aussi. Mais je n'ai pas utiliser l'ID de processus.
J'ai fait:
OriginalL'auteur Hailey Yoon