#include "mainwindow.h"
#include "ui_mainwindow.h"
#pragma execution_character_set("UTF-8")//解决汉字乱码
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//Python初始化
if(Py_IsInitialized() == 0){
qDebug()<<"初始化";
Py_Initialize();
}
//导入sys模块设置模块地址
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')"); // 将py文件放入同级目录
// QString setSysPath = QString("sys.path.append('%1')").arg(QCoreApplication::applicationDirPath());
// PyRun_SimpleString(setSysPath.toStdString().c_str());
// qDebug()<<setSysPath.toStdString().c_str();
//创建模块指针
PyObject* pModule = PyImport_ImportModule("aaaa");
if (!pModule)
qDebug()<<"pModule获取模块指针失败";
//创建函数指针
PyObject* pFunc = PyObject_GetAttrString(pModule,"add_func");
if(!pFunc)
qDebug()<<"pModule获取函数指针失败";
// //创建函数参数,方法1
// PyObject* pPara = PyTuple_New(2); // 2个参数
// PyTuple_SetItem(pPara, 0, Py_BuildValue("i",1)); //参数1为int型 1
// PyTuple_SetItem(pPara, 1, Py_BuildValue("i",2)); //参数2为int型 2
// //pPara = Py_BuildValue("(i,i)",1,2); //连写方式
// /*
// PyObject* pPara = PyTuple_New(2); // 2个参数
// PyTuple_SetItem(pPara, 0, Py_BuildValue("s","Hello")); //参数1为String型 "Hello"
// PyTuple_SetItem(pPara, 1, Py_BuildValue("s","World!")); //参数2为String型 "World!"
// */
// /// s 将C字符串转换成Python对象,如果C字符串为空,返回NONE
// /// c 将C类型的char转换成长度为1的Python字符串对象
// /// i 将一个C类型的int转换成Python int对象
// /// l 将C类型的long转换成Pyhon中的int对象
// /// f 将C类型的float转换成python中的浮点型对象
// /// d 将C类型的double转换成python中的浮点型对象
// //创建函数参数,方法2
// PyObject* args = PyTuple_New(2); // 2个参数
// PyObject* arg1 = PyLong_FromLong(4); // 参数一设为4
// PyObject* arg2 = PyLong_FromLong(3); // 参数二设为3
// PyTuple_SetItem(args, 0, arg1);
// PyTuple_SetItem(args, 1, arg2);
//创建函数参数,方法3
PyObject* pPara = PyTuple_New(2); // 2个参数
pPara = Py_BuildValue("(i,i)",11,2); //连写方式
//调用Python函数,传入元组参数pPara
PyObject *FuncBack = PyObject_CallObject(pFunc,pPara);
//PyObject_CallObject(pFunc,nullptr); //无参数调用
//FuncBack是返回值指针,转换获取返回值
int res = 0;
PyArg_Parse(FuncBack,"i",&res);
qDebug()<<"返回值: "<<res;
//调用结束,销毁
Py_Finalize();
}
MainWindow::~MainWindow()
{
delete ui;
}
没有合适的资源?快使用搜索试试~ 我知道了~
C++调用Python脚本
共57个文件
qm:22个
dll:21个
py:4个
需积分: 0 9 下载量 190 浏览量
2023-10-19
16:54:34
上传
评论
收藏 18.73MB ZIP 举报
温馨提示
C++调用Python脚本,简单实现Qt, C++调用Python脚本,py脚本文件需要放入bin目录。
资源推荐
资源详情
资源评论
收起资源包目录
C++Python.zip (57个子文件)
C++Python
mainwindow.h 393B
mainwindow.cpp 3KB
C++Python.pro.user 78KB
main.cpp 193B
mainwindow.ui 558B
bin
styles
qwindowsvistastyle.dll 126KB
libGLESv2.dll 2.73MB
Qt5Gui.dll 5.7MB
imageformats
qjpeg.dll 363KB
qsvg.dll 27KB
qtga.dll 26KB
qtiff.dll 338KB
qwebp.dll 424KB
qgif.dll 31KB
qicns.dll 39KB
qwbmp.dll 25KB
qico.dll 31KB
Qt5Core.dll 5.05MB
Qt5Svg.dll 266KB
Qt5Widgets.dll 4.38MB
translations
qt_lv.qm 150KB
qt_sk.qm 123KB
qt_cs.qm 171KB
qt_de.qm 209KB
qt_ja.qm 127KB
qt_fi.qm 176KB
qt_da.qm 170KB
qt_ko.qm 128KB
qt_fr.qm 162KB
qt_pl.qm 159KB
qt_ar.qm 156KB
qt_it.qm 157KB
qt_bg.qm 161KB
qt_gd.qm 185KB
qt_es.qm 161KB
qt_en.qm 23B
qt_uk.qm 155KB
qt_zh_TW.qm 125KB
qt_ca.qm 180KB
qt_hu.qm 157KB
qt_he.qm 135KB
qt_ru.qm 194KB
iconengines
qsvgicon.dll 34KB
python39.dll 4.3MB
platforms
qwindows.dll 1.17MB
libEGL.dll 21KB
C++Python.exe 22KB
opengl32sw.dll 15.25MB
D3Dcompiler_47.dll 3.31MB
__pycache__
aaaa.cpython-39.pyc 435B
ssss.py 87B
aaaa.py 298B
ui_mainwindow.h 2KB
__pycache__
aaaa.cpython-39.pyc 438B
C++Python.pro 1KB
ssss.py 87B
aaaa.py 298B
共 57 条
- 1
资源评论
bug和崩溃我都要
- 粉丝: 11
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功