pythonqt项目_PythonQt

PythonQT完美将Python与QT结合,项目:https://github.com/MeVisLab/pythonqt(文档https://mevislab.github.io/pythonqt/)

1、脚本放入资源文件的使用方法:(参考PythonQt自带的例子CPPPyWrapperExample)

可将脚本放入资源文件中,如:/datarequest.py

A、mainModule.evalFile(":datarequest.py");

PythonQtObjectPtr tag = mainModule.evalScript("EyeD3Tagger()\n", Py_eval_input);

B、PythonQt::self()->setImporter(NULL); //这一句很重要

PythonQt::self()->getMainModule().evalScript("import sys");

PythonQt::self()->getMainModule().evalScript("sys.path.append(':')"); //这一句很重要

mainModule.evalScript("import datarequest\n");

PythonQtObjectPtr tag = mainModule.evalScript("datarequest.DataRequest()\n", Py_eval_input);

在PythonQt中evalScript函数不支持Unicode:

1 QVariant PythonQt::evalScript(PyObject* object, const QString& script, intstart)2 {3 QVariant result;4 PythonQtObjectPtr p;5 PyObject* dict =NULL;6 clearError();7 if (PyModule_Check(object)) {8 dict = PyModule_GetDict(object);9 } else if (PyDict_Check(object)) {10 dict = object;11 }12 if(dict) {13 p.setNewRef(PyRun_String(script.toLatin1().data(), start, dict, dict));

//p.setNewRef(PyRun_String(script.toUtf8().data(), start, dict, dict));14 }15 if(p) {16 result =PythonQtConv::PyObjToQVariant(p);17 } else{18 handleError();19 }20 returnresult;21 }

这是由于函数中第13行将脚本代码(script)传入Python时使用的是 toLation1 函数,这个函数是不支持百拉丁字符的,因此将这个函数替换成 toUtf8即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值