Установить аргументы с различными форматами в QProcess - PullRequest
0 голосов
/ 03 мая 2020

Я хочу запустить python скрипт в моем проекте qt после нажатия кнопки с помощью QProcess. Это мой код:

void MainWindow::on_pushButton_clicked()
{
    QProcess p;
        QStringList params;
        QString pythonPath = "C:/Python/python.exe";
        QString pythonScript = "C:\\Users\\melek\\Desktop\\user_interface\\user_interface-master\\match.py";

        params << pythonScript;
        QStringList arguments;
        arguments <<"-t1"<<"start.png"<<"-t2"<< "end.png"<<"-i"<< "images_";
        p.setArguments(arguments);
        p.start(pythonPath, params);
        p.execute(pythonPath,params);

        p.waitForFinished(-1);


        QString p_stdout = p.readAll();
        QString output(p.readAllStandardOutput());
        QString p_stderr = p.readAllStandardError();
        if(!p_stderr.isEmpty())
           qDebug()<<"Python error:"<<p_stderr;
        qDebug()<<"Python result="<<p_stdout;
        qDebug()<<p_stdout;
        qDebug()<<output;
}

Аргументы python показаны в python коде:

ap = argparse.ArgumentParser()
ap.add_argument("-t1", "--template1", required=True, help="Path to template image")
ap.add_argument("-t2", "--template2", required=True, help="Path to template image")
ap.add_argument("-i", "--images", required=True,
    help="Path to images where template will be matched")
ap.add_argument("-v", "--visualize",
    help="Flag indicating whether or not to visualize each iteration")

Это то, что я пишу в терминале python для Запустите программу правильно: path_to_script\python python match.py --template1 start.png --template2 end.png --images images_

Где шаблоны 1 и 2 - это две картинки png, images_ - папка и --visualize не должно быть задано в терминале.

После запуска программы в QT я получаю следующую ошибку:

usage: match.py [-h] -t1 TEMPLATE1 -t2 TEMPLATE2 -i IMAGES [-v VISUALIZE] match.py: error: the following arguments are required: -t1/--template1, -t2/--template2, -i/--images

...