• 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即可

        

  • 相关阅读:
    DHCP Option 60 的理解
    程序中的魔鬼数字
    开源GUI-Microwindows之程序入口分析
    http报错之return error code:401 unauthorized
    内存泄漏以及常见的解决方法
    怎样对ListView的项进行排序
    getline函数
    JavaFx初探
    ListBox控件的操作与实现
    SQLite的SQL语法
  • 原文地址:https://www.cnblogs.com/jiaping/p/6868321.html
Copyright © 2020-2023  润新知