#include "testPython.h"
#include <QtWidgets/QApplication>
#include <Python.h>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Py_Initialize();
if (!Py_IsInitialized())
{
qDebug() << "Initialize Python failed.";
}
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append(\"./\")");
PyObject* pModule = PyImport_ImportModule("testfile");
if (!pModule)
{
qDebug() << "load pModule(testfile.py) fail!";
Py_Finalize();
return a.exec();
}
PyObject* pFun_show = PyObject_GetAttrString(pModule, "show");
if (!pFun_show)
{
qDebug() << "Get pFun_show(show) failed!";
}
PyObject* pResult = PyObject_CallObject(pFun_show, NULL);
if (!pResult) {
qDebug() << "Failed to call generate_random_array function!";
PyErr_Print();
}
PyObject* pFun_sum = PyObject_GetAttrString(pModule, "sum");
if (!pFun_sum)
{
qDebug() << "Get pFun_sum(sum) failed!";
}
PyObject *a = PyLong_FromLong(10);
PyObject* b = PyLong_FromLong(20);
PyObject* PyObjectArgs = PyTuple_New(2);
PyTuple_SetItem(PyObjectArgs, 0, PyLong_FromLong(10));
PyTuple_SetItem(PyObjectArgs, 1, PyLong_FromLong(20));
PyObject* pSumRetVal = PyObject_CallObject(pFun_sum, PyObjectArgs);
if (!pResult) {
qDebug() << "Failed to call generate_random_array function!";
PyErr_Print();
}
pSumRetVal = PyObject_CallFunctionObjArgs(pFun_sum, a, b);
PyObject* pRetVal = PyObject_Str(pSumRetVal);
const char* resultStr = PyUnicode_AsUTF8(pRetVal);
Py_XDECREF(pSumRetVal);
Py_XDECREF(pResult);
Py_XDECREF(pFun_sum);
Py_XDECREF(pFun_show);
Py_XDECREF(pModule);
Py_Finalize();
testPython w;
w.show();
return a.exec();
}
Python脚本内容
def show():
print("hello!")
def sum(a,b):
return (a+b)
def main():
show()
print(sum(1,2))
if __name__ == '__main__':
main()