QProcess将参数传递给一个python脚本

2024-10-01 22:43:54 发布

您现在位置:Python中文网/ 问答频道 /正文

from PIL import Image
def porcentaje(path):

    im = Image.open(path, "r")
    im.show()
    width, height = im.size
    type = im.mode
    format = im.format
    pixels=im.getdata()
    n = len(pixels)
   im=im.load()
   nblack = 0
   noblack=0

   for pixel in pixels:
       if pixel < 50:
           nblack += 1
       else:
           noblack+=1

porcentajefinal=(nblack*100)/n
print(porcentajefinal)
return(porcentajefinal)

(porcentaje(path))

在主窗口.cpp(QT创建者)

^{pr2}$

这个python需要一个名为path的变量来运行,我在qtwarator中用Qstring path得到这个变量,如何用Qprocess给python这个变量。在


Tags: pathfromimageimportformatpildefopen
1条回答
网友
1楼 · 发布于 2024-10-01 22:43:54

如果要通过终端将参数传递给脚本,则使用以下结构:

python.exe /path/of/your_script.py arg1 arg2 ... argn

然后我们必须使用系统argv它是一个存储以下内容的列表:

^{pr2}$

所以在您的例子中,您应该通过sys.argv[1]获得参数:

2_1.py

from PIL import Image
import sys

def porcentaje(path):

    im = Image.open(path, "r")
    im.show()
    width, height = im.size
    type = im.mode
    format = im.format
    pixels=im.getdata()
    n = len(pixels)
    im=im.load()
    nblack = 0
    noblack=0
    for pixel in pixels:
        if pixel < 50:
            nblack += 1
        else:
            noblack+=1

    porcentajefinal=(nblack*100.0)/n
    print(porcentajefinal)
    return(porcentajefinal)

path = sys.argv[1]
porcentaje(path)

在Qt这边,python.exe是主程序,其他参数是参数,因此代码必须具有以下结构:

void MainWindow::on_pushButton_2_clicked()
{
    QString path = QFileDialog::getOpenFileName(this, "All Files (*)");
    qDebug()<<path;
    if(!path.isEmpty()){
        QDir dir("D:/QTCProjects/prueba");
        QFileInfo info(dir, "2_1.py");
        qDebug() << dir.exists() << info.exists();
        QProcess process;
        process.start("python.exe", QStringList()<< info.absoluteFilePath() << path);
        process.waitForFinished(-1);
        qDebug() << "myProcess:" << process.readAll();
    }
}

相关问题 更多 >

    热门问题