一.环境
Qt 5.15.2
python-3.12.5
二.安装
1.安装python-3.12.5.exe
三.配置
1.设置环境变量
2.设置Qt 编译环境
3.新建Python文件
4.运行
四.源码
1.修改pro文件
2.testPy.py
注意: .py文件需要拷贝到build目录下
def myPrint(string):print(string)def add(a,b):return (a+b)
3.mainwindow.cpp
#undef slots
#include <Python.h>
#define slots Q_SLOTSMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{Py_Initialize();if ( !Py_IsInitialized() ){qDebug("python 初始化失败!");}PyRun_SimpleString("import sys");PyRun_SimpleString("sys.argv = ['python.py']");PyRun_SimpleString("sys.path.append('./')");//导入testPy.py模块PyObject* pModule = PyImport_ImportModule("testPy");if (!pModule){qDebug("Cant open python file!\n");}//调用Python函数 myPrintPyObject* pFunc1= PyObject_GetAttrString(pModule,"myPrint");if(!pFunc1){qDebug()<<"Get function myPrint failed";}PyObject_CallFunction(pFunc1,"s","123"); //函数输入参数//调用Python函数 addPyObject* pFunc2= PyObject_GetAttrString(pModule,"add");if(!pFunc2){qDebug()<<"Get function myPrint failed";}PyObject* pParam = PyTuple_New(2); //2个输入参数PyTuple_SetItem(pParam,0,Py_BuildValue("i",15));PyTuple_SetItem(pParam,1,Py_BuildValue("i",16));PyObject *FuncBack = PyObject_CallObject(pFunc2,pParam);int rtn = 0;PyArg_Parse(FuncBack,"i",&rtn);qDebug() << "Func2 返回值 = " << rtn;//结束,释放pythonPy_Finalize();}