zoukankan      html  css  js  c++  java
  • 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() ", 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 ");
          PythonQtObjectPtr tag = mainModule.evalScript("datarequest.DataRequest() ", Py_eval_input);

    在PythonQt中evalScript函数不支持Unicode:

     1 QVariant PythonQt::evalScript(PyObject* object, const QString& script, int start)
     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 return result; 21 }

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

        

  • 相关阅读:
    Python 字典(Dictionary)操作详解
    MySQL root密码忘记后更优雅的解决方法
    linux下升级python
    mysql实现复杂groupby : GROUP_CONCAT
    Python常用time处理
    spark安装
    python2脚本批量转成python3
    linux zip压缩文件
    dataframe 差集
    012.mysql-mysql查询字段排序规则、数据库编码、表编码,修改排序规则
  • 原文地址:https://www.cnblogs.com/jiaping/p/6868321.html
Copyright © 2011-2022 走看看