最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt調(diào)用Python詳細(xì)圖文過程記錄

 更新時(shí)間:2023年05月12日 09:58:07   作者:十年編程老舅  
Qt調(diào)用python實(shí)際上就是c++調(diào)python,網(wǎng)上搜會(huì)出來很多,介紹得也比較全,這里做個(gè)記錄,下面這篇文章主要給大家介紹了關(guān)于Qt調(diào)用Python詳細(xì)圖文過程,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下

1、創(chuàng)建Qt工程

2、添加Python文件

編寫Python代碼,項(xiàng)目結(jié)構(gòu)如下圖示:

3 、添加Python庫

在工程文件中加上Python安裝路徑下的??include???和??libs??路徑:

INCLUDEPATH += C:\Users\Administrator\AppData\Local\Programs\Python\Python37\include
LIBS += -LC:\Users\Administrator\AppData\Local\Programs\Python\Python37\libs -lpython37
//注意:-L 和 PATH 之間不能有空格

注意:此處必須根據(jù)自己的安裝情況做修改

4、調(diào)用Python模塊

#ifndef
#define
 
#include <QMainWindow>
#include <Python.h>
#include <iostream>
#include <QDebug>
 
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
 
private:
    Ui::MainWindow *ui;
};
#endif// MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
    //Python初始化
    Py_Initialize();
    if( !Py_IsInitialized() )
        qDebug()<<"初始化失敗";
 
    //導(dǎo)入sys模塊設(shè)置模塊地址
    PyRun_SimpleString("import sys");
    PyRun_SimpleString("sys.path.append('./')");
    //QString setSysPath = QString("sys.path.append('%1')").arg(QCoreApplication::applicationDirPath());
    //PyRun_SimpleString(setSysPath.toStdString().c_str());
 
    //創(chuàng)建模塊指針
    PyObject* pModule = PyImport_ImportModule("Py_Module");
    if (!pModule)
        qDebug()<<"獲取模塊指針失敗";
 
    //創(chuàng)建函數(shù)指針
    PyObject* pFunc= PyObject_GetAttrString(pModule,"add");
    if(!pFunc)
        qDebug()<<"獲取函數(shù)指針失敗";
 
    //創(chuàng)建函數(shù)參數(shù),方法1
    PyObject* pPara = PyTuple_New(2);        // 2個(gè)參數(shù)
    PyTuple_SetItem(pPara, 0, Py_BuildValue("i",1));  //參數(shù)1為int型 1
    PyTuple_SetItem(pPara, 1, Py_BuildValue("i",2));  //參數(shù)2為int型 2
    //pPara = Py_BuildValue("(i,i)",1,2); //連寫方式
 
    /*
    PyObject* pPara = PyTuple_New(2);        // 2個(gè)參數(shù)
    PyTuple_SetItem(pPara, 0, Py_BuildValue("s","Hello"));  //參數(shù)1為String型 "Hello"
    PyTuple_SetItem(pPara, 1, Py_BuildValue("s","World!"));  //參數(shù)2為String型 "World!"
    */
    
    /// s 將C字符串轉(zhuǎn)換成Python對象,如果C字符串為空,返回NONE
    /// c 將C類型的char轉(zhuǎn)換成長度為1的Python字符串對象
    /// i 將一個(gè)C類型的int轉(zhuǎn)換成Python int對象
    /// l 將C類型的long轉(zhuǎn)換成Pyhon中的int對象
    /// f 將C類型的float轉(zhuǎn)換成python中的浮點(diǎn)型對象
    /// d 將C類型的double轉(zhuǎn)換成python中的浮點(diǎn)型對象
 
    //創(chuàng)建函數(shù)參數(shù),方法2
    PyObject* args = PyTuple_New(2);        // 2個(gè)參數(shù)
    PyObject* arg1 = PyLong_FromLong(4);    // 參數(shù)一設(shè)為4
    PyObject* arg2 = PyLong_FromLong(3);    // 參數(shù)二設(shè)為3
    PyTuple_SetItem(args, 0, arg1);
    PyTuple_SetItem(args, 1, arg2);
 
    //調(diào)用Python函數(shù),傳入元組參數(shù)pPara
    PyObject *FuncBack = PyObject_CallObject(pFunc,pPara);
    //PyObject_CallObject(pFunc,nullptr); //無參數(shù)調(diào)用
 
    //FuncBack是返回值指針,轉(zhuǎn)換獲取返回值
    int res = 0;
    PyArg_Parse(FuncBack,"i",&res);
    qDebug()<<"返回值: "<<res;
 
    //調(diào)用結(jié)束,銷毀
    Py_Finalize();
 
}
 
MainWindow::~MainWindow()
{
    delete ui;
}

5、移動(dòng)文件

編寫完上述代碼之后,直接運(yùn)行,會(huì)得到:

獲取模塊指針失敗

要保證Qt可執(zhí)行文件與Python源文件在同一級目錄下,方可正常運(yùn)行

所以將工程下的??Py_Module.py???復(fù)制到構(gòu)建目錄下的??debug??文件夾中:

6、運(yùn)行結(jié)果

7、錯(cuò)誤總結(jié)及解決辦法

錯(cuò)誤1:找不到??Python.h??

出現(xiàn)原因: 因?yàn)槲覀冊赾++中使用這個(gè)了頭文件,因此出現(xiàn)了找不到python.h
解決辦法: 在.pro文件中添加python的頭文件以及靜態(tài)鏈接庫,參考:3 、添加Python庫

錯(cuò)誤2:

PyType_Slot *slots; object.h(445) : error C2059: 語法錯(cuò)誤:“;”
object.h(445) : error C2238: 意外的標(biāo)記位于“;”之前

解決辦法:把slots改成slots1,Python將slots作為變量,而Qt將slots作為關(guān)鍵字,所以沖突了,再次編譯該問題就沒有了

錯(cuò)誤3:

解決辦法:簡單粗暴,直接注釋掉

總結(jié)

到此這篇關(guān)于Qt調(diào)用Python的文章就介紹到這了,更多相關(guān)Qt調(diào)用Python內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Pytorch中torch.repeat_interleave()函數(shù)使用及說明

    Pytorch中torch.repeat_interleave()函數(shù)使用及說明

    這篇文章主要介紹了Pytorch中torch.repeat_interleave()函數(shù)使用及說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 詳解Python中類的定義與使用

    詳解Python中類的定義與使用

    本篇文章主要介紹了詳解Python中類的定義與使用,介紹了什么叫做類和如何使用,具有一定的參考價(jià)值,想要學(xué)習(xí)Python的同學(xué)可以了解一下。
    2017-04-04
  • Python計(jì)算回文數(shù)的方法

    Python計(jì)算回文數(shù)的方法

    這篇文章主要介紹了Python計(jì)算回文數(shù)的方法,實(shí)例分析了Python操作字符串的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • Python進(jìn)度條的制作代碼實(shí)例

    Python進(jìn)度條的制作代碼實(shí)例

    這篇文章主要介紹了Python進(jìn)度條的制作代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python線程中同步鎖詳解

    python線程中同步鎖詳解

    這篇文章主要為大家詳細(xì)介紹了python線程中同步鎖的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Sentry錯(cuò)誤日志監(jiān)控使用方法解析

    Sentry錯(cuò)誤日志監(jiān)控使用方法解析

    這篇文章主要介紹了Sentry錯(cuò)誤日志監(jiān)控使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python實(shí)現(xiàn)快速提取Word表格并轉(zhuǎn)Markdown

    Python實(shí)現(xiàn)快速提取Word表格并轉(zhuǎn)Markdown

    這篇文章主要為大家詳細(xì)介紹了一套Python零基礎(chǔ)可操作的代碼方案,幫助測試工程師3分鐘內(nèi)完成表格提取與轉(zhuǎn)換,直接對接自動(dòng)化測試或大模型,需要的小伙伴可以參考下
    2025-04-04
  • Python sklearn CountVectorizer使用詳解

    Python sklearn CountVectorizer使用詳解

    這篇文章主要介紹了Python_sklearn_CountVectorizer使用詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • python3通過udp實(shí)現(xiàn)組播數(shù)據(jù)的發(fā)送和接收操作

    python3通過udp實(shí)現(xiàn)組播數(shù)據(jù)的發(fā)送和接收操作

    這篇文章主要介紹了python3通過udp實(shí)現(xiàn)組播數(shù)據(jù)的發(fā)送和接收操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python實(shí)現(xiàn)JSON數(shù)據(jù)動(dòng)態(tài)生成思維導(dǎo)圖圖片

    Python實(shí)現(xiàn)JSON數(shù)據(jù)動(dòng)態(tài)生成思維導(dǎo)圖圖片

    這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)將JSON格式數(shù)據(jù)動(dòng)態(tài)生成思維導(dǎo)圖圖片,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2025-02-02

最新評論

浑源县| 临江市| 米泉市| 霍城县| 长岭县| 凤阳县| 友谊县| 武平县| 都匀市| 调兵山市| 彭山县| 安龙县| 武定县| 隆昌县| 兴仁县| 靖西县| 白银市| 壶关县| 彩票| 静安区| 西平县| 吉林省| 历史| 武邑县| 玛曲县| 祥云县| 武夷山市| 卢湾区| 江孜县| 定西市| 凯里市| 乾安县| 庆阳市| 德安县| 留坝县| 盐亭县| 灵石县| 梧州市| 隆尧县| 昭平县| 前郭尔|