Qt 调用执行 Python 函数

news2024/9/24 7:19:26

一.环境

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_SLOTS

MainWindow::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函数 myPrint
    PyObject* pFunc1= PyObject_GetAttrString(pModule,"myPrint");
    if(!pFunc1)
    {
        qDebug()<<"Get function myPrint failed";
    }

    PyObject_CallFunction(pFunc1,"s","123"); //函数输入参数

    //调用Python函数 add

    PyObject* 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;


    //结束,释放python
    Py_Finalize();

}

五.运行

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2081191.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抖音ip会莫名其妙变成北京吗

‌‌抖音IP会莫名其妙变成北京吗&#xff1f;抖音的IP地址可能会莫名其妙变成‌北京‌&#xff0c;这通常是由于多种原因导致的&#xff0c;包括但不限于网络连接、用户使用的网络服务提供商等问题。以下是一些可能导致这种情况发生的原因和解决方法。 原因分析&#xff1a; 网…

mysql学习下

1&#xff1a;添加数据 1.1为表中所有字段添加数据 1.1.1NSERT 语句中指定所有字段名 语法&#xff1a;INSERT INTO 表名(字段名1&#xff0c;字段名2&#xff0c;…)VALUES(值1&#xff0c;值2&#xff0c;…); 例题&#xff1a;向student表中插⼊&#xff08;id为1&#…

src-登陆框的常见测试思路

常见的登陆形式 第三方平台 OAuth 认证 用户名 密码 手机号 短信验证码 邮箱 邮件验证码 登陆框的常见测试思路 弱口令 弱口令指的是人为设定、复杂度较低的密码口令 为系统账户&#xff08;尤其是管理员账户&#xff09;设置弱口令会使得整个系统的身份认证模块…

graalvm jenkins maven 配置

1. maven 使用指定jdk编译 设置 JAVA_HOME环境变量: linux: linux: export JAVA_HOME/data/java/graalvm-jdk-22.0.29.1window: set JAVA_HOMED:\develop\Java\graalvm-jdk-22.0.29.1 2.mvn编译报错 问题 : Unable to make field private final java.util.Comparator java.…

波束搜索算法图解【Beam Search】

许多 NLP 应用程序&#xff08;例如机器翻译、聊天机器人、文本摘要和语言模型&#xff09;都会生成一些文本作为其输出。此外&#xff0c;图像字幕或自动语音识别&#xff08;即语音转文本&#xff09;等应用程序也会输出文本&#xff0c;即使它们可能不被视为纯 NLP 应用程序…

#网络高级 笔记

modbus_tcp协议 modbus_rtu协议和modbus库 http协议和web服务器搭建 服务器原码分析和基于WebServer的工业数据采集项目 第H5&#xff0c;即网页制作&#xff0c;项目完善 一、modbus起源 1.起源 Modbus由Modicon公司于1979年开发&#xff0c;是一种工业现场总线协议标准 Mo…

Harmony(鸿蒙)使用之Bugly的简单使用

Bugly环境&#xff1a;Bugly Harmony 版本&#xff0c;支持Harmony OS Next平台 开发工具版本&#xff1a;DevEco Studio NEXT Developer Beta1&#xff08;以上&#xff09;&#xff0c;API 12 步骤一、创建产品&#xff0c;填写产品相关信息 1、注册完成后&#xff0c;可在…

R 语言学习教程,从入门到精通,R 绘图 中文支持(25)

1、R 绘图 中文支持 不同系统的字体库目录&#xff1a; Linux 一般在 /usr/share/fonts 下&#xff0c;我们可以使用 fc-list 命令查看&#xff1a; # fc-list /usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf: DejaVu Serif:styleBold /usr/share/fonts/truetype/de…

vue事件监听

我们可以使用 v-on 指令 (简写为 ) 来监听 DOM 事件&#xff0c;并在事件触发时执行对应的 1.回车事件&#xff08;点击回车触发&#xff09; confirm 适用uni-app keyup.enter 适用vue3 运用场景&#xff1a;通常在文本框输入的时候使用 2.点击事件&#xff08;鼠标左键…

基于ZYNQ FPGA+DSP C6678坚固型高性能数据采集与运动控制系统

基于FPGADSP的实时控制系统架构的坚固型高性能运动控制器&#xff0c;支持多通道并行同步实时高速采样&#xff0c;并直接通过底层逐点传递给DSP算法处理&#xff0c;以保证实时性&#xff0c;可以实现高速的逐点控制输出&#xff0c;确保了控制系统能够在多输入多输出高速控制…

PDF文件的读取与合并:使用PyPDF2与ReportLab

目录 一、PyPDF2库基础 1.1 PyPDF2简介 1.2 安装PyPDF2 1.3 读取PDF内容 1.4 合并PDF文件 二、ReportLab库基础 2.1 ReportLab简介 2.2 安装ReportLab 2.3 使用ReportLab生成PDF文本 2.4 ReportLab 与 PyPDF2 结合使用 三、注意事项与最佳实践 3.1 文本提取的局限性…

HW数通IA笔记2-网络参考模型

目录 零、本章主要内容 一、应用和数据 二、网络参考模型与标准协议 2.2 TCP/IP参考模型 2.3 TCP/IP常见协议 2.3.1 应用层 2.3.2 传输层 2.3.3 网络层 2.3.4 数据链路层 2.3.5 物理层 2.4 常见的协议标准化组织 三、数据的通信过程 零、本章主要内容 1、理解数据的…

高级MySQL数据库备份脚本

高级MySQL数据库备份脚本 主要功能项目构成credentials.txtsettings.confmysql-dump.sh SFTP备份配置&#xff1a;生成 SSH 密钥对将公钥复制到 SFTP 服务器测试无密码登录 邮件发送配置安装插件sendmail、mailx修改mail配置获取邮箱授权码 如何执行备份执行备份脚本计划每日的…

【数据结构-前缀异或和】力扣1371. 每个元音包含偶数次的最长子字符串

给你一个字符串 s &#xff0c;请你返回满足以下条件的最长子字符串的长度&#xff1a;每个元音字母&#xff0c;即 ‘a’&#xff0c;‘e’&#xff0c;‘i’&#xff0c;‘o’&#xff0c;‘u’ &#xff0c;在子字符串中都恰好出现了偶数次。 示例 1&#xff1a; 输入&…

PyCharm 自定义字体大小

常用编程软件自定义字体大全首页 文章目录 前言具体操作1. 打开设置对话框2. 设置编辑器字体3. 选择外观字体 前言 PyCharm 自定义字体大小&#xff0c;统一设置为 JetBrains Mono 具体操作 【File】>【Settings...】>【Editor】>【Font】 统一设置为字体样式 JetB…

JVM上篇:内存与垃圾回收篇-13-垃圾回收器

笔记来源&#xff1a;尚硅谷 JVM 全套教程&#xff0c;百万播放&#xff0c;全网巅峰&#xff08;宋红康详解 java 虚拟机&#xff09; 文章目录 13. 垃圾回收器13.1. GC 分类与性能指标13.1.1. 垃圾回收器概述13.1.2. 垃圾收集器分类13.1.3. 评估 GC 的性能指标吞吐量暂停时间…

X86架构(五)——栈操作与寻址操作

我们先采用 X86架构(四) 所学知识&#xff0c;在显示器上显示 123...100 ;代码清单7-1;文件名&#xff1a;c07_mbr.asm;文件说明&#xff1a;硬盘主引导扇区代码;创建日期&#xff1a;2011-4-13 18:02jmp near __startmessage db 123...100 __start:mov ax, 0x7c0 ;数据段基…

APP封装安装配置参考说明

APP封装安装配置参考说明 一, 环境准备 宝塔环境 nginx php5.6 mysql5.6 java-openjdk1.8 apktool 1,安装 nginx,php,mysql自行安装 java-openjdk1.8 安装 推荐使用命令行安装 1.1 yum install java-1.8.0-openjdk1.2 yum install -y java-1.8.0-openjdk-devel1.3 设置…

Intellij Idea + Git 完美实战!

环境准备 使用前需要安装一个远程的 Git 仓库和本地的 Git 客户端。由于IDEA中的Git插件需要依赖本地Git客户端&#xff0c;所以需要进行如下配置&#xff1a; 如果本地已有项目&#xff0c;直接通过如下操作&#xff0c;即可在远程自动创建仓库并关联 1. 克隆远程仓库代码&am…

halcon4

图像采集助手-Image Aequisition 1.配置相机IP 和巨型帧等 2.通过海康MVS软件 找到 对应halcon 版本 3. 找到对应halcon版本的 海康相机文件 4.找到Halocn文件目录 粘贴上图文件 通过halcon 助手 -Image Aequisition -自动检测 -找到MVision接口 连接相机 采集图像 实时…