QT C++中直接调用python接口

这篇博客介绍了如何在Qt C++应用中直接调用Python接口。通过Python.h头文件,初始化Python环境,导入模块,执行Python脚本并获取返回值。示例中展示了调用名为'testList'的Python函数,该函数返回一个字符串列表,C++代码遍历并打印这些字符串。
摘要由CSDN通过智能技术生成

本文记录在Qt中直接调用python接口的方式

python文件,testList.py如下:

#!/usr/bin/python

def testlist():
  a = ['tomsun', 'wenfang', 'ada', 'lily'] #当然列表中可以还包含列表
  return a


C++中代码如下:

#include <Python.h>

void testList()
{
  Py_Initialize();
  PyObject *pModule = NULL;
  PyObject *pFunc = NULL;
  PyObject *pReturn = NULL;
  int i = 0;


  PyRun_SimpleString("import sys");
  PyRun_SimpleString("sys.path.append('./')"); //这个是python源文件所在的路径,比如,你的

//python路径在/tmp/目录下,就修改为PyRun_SimpleString("sys.path.append('/tmp/')")
  pModule = PyImport_ImportModule("testList");
  pFunc = PyObject_GetAttrString(pModule,"testlist");
  pReturn = PyEval_CallObject(pFunc, NULL);

C++ Qt 项目调用 Python 代码通常可以使用 QPython 库,这是一个专门为 Qt 开发者设计的跨平台库,它允许你在 Qt 程序无缝地集成 Python 代码。以下是基本步骤: 1. **安装 QPython**: - 首先,确保你已经在你的系统上安装了 Python 和 PyQt5 或 PySide2。QPython 依赖于它们。 - 可从 GitHub (https://github.com/albertz/qpython) 或官网下载 QPython 的库。 2. **配置 QPython**: - 添加 QPython 到你的 Qt 项目的构建文件(如.pro 文件),例如,添加 `QT += qpython` 来启用 QPython 支持。 - 如果需要,创建一个 Python 脚本文件 (.py),这将作为你的“入口”点。 3. **在 C++ 导入并调用 Python 代码**: - 使用 `QProcess` 对象启动 Python 进程,传递你的脚本作为参数,比如: ```cpp QProcess *process = new QProcess(this); process->start(QStringLiteral("qpython"), { QStringLiteral("/path/to/your/script.py") }); ``` - 接收 Python 的输出,可以通过监听 `readyReadStandardOutput` 或 `readyReadStandardError` 信号来读取数据。 4. **通信与数据交换**: - Python 代码可以通过标准输入、输出和错误流与 C++ 交互。你可以向 Python 发送字符串(`process->write(inputStr.toUtf8());`),然后从 Python 获取结果(`QString output = QString::fromUtf8(process->readAllStandardOutput());`)。 注意,虽然这种方法方便快捷,但它并不适合处理复杂的交互或性能密集型任务,因为每次调用 Python 会有一个额外的进程开销。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值