需求描述
项目上需要生成word格式的测试报告,程序是基于Qt开发的,用的QAxObject来生成报告。首先需要系统安装了word,如果报告内容多的话,生成速度非常慢。找了一圈没发现特别好的C++的word操作库,docx库比较好,但是只有C#和python的语言的。考虑到python应用场景比较多一些,C#还得安装net环境,所以开始研究一下python。经过一天的研究,基本算是入门 了,下面将安装过程、打包发布、word生成、XML文件读取做一下笔记。整个工程都上传到资源文件中,做一个备份。
下载链接
python安装
这里建议安装python2.7版本,3版本以上的slot变量与Qt冲突,而且还缺少一些头文件。安装路径记得不要有空格,其他的就是下一步、下一步即可,安装完成以后将路径添加到环境变量
然后打开超级终端,输入 pip install python-docx 即可安装docx库。
python开发环境安装
如果程序简单用notepad++就可以编写python代码,但是没有自动补全,还是有些不方便。网上查了一下,最终选定用sublime text3加kite,效果还不错。左下角显示kite:initialzing说明就可以了。
sublime的安装直接下一步、下一步就行了。kite的安装路径,路径不要带空格,安装的时候有个添加环境变量,记得勾上。安装完成以后,重启笔记本,打开kite,就可以看到自动探测到sublime了,重新打开sublime就可以了使用了。
python文档
学习一门语言,最重要的就是会看它的帮助文档。可能主要是因为不熟,还是觉得Qt的帮助文档是最好的。python遇到不会的可以直接用help函数获取它的帮助文件。比如root想知道它有哪些函数和属性,直接调用help就可以获取了,还是比较方便,但是与C++还是有点差别。
python发布打包
将python安装目录下的Dlls和Lib文件夹拷贝到一个新建的文件夹Python27中,然后将该文件夹拷贝到可执行程序同目录,记得还得拷贝python27.dll过来,此处要注意了,
第一点,该动态库它不在python的安装目录下,在C:\Windows\SysWOW64目录下,如果你是32位就在32位的目录下,可以直接查找也行;
第二点,如果程序要发布到32的系统中一定要用32位的打包,64位的不行,如何获取32位的dll了,很简单在32的机器上安装一次python,然后到C盘获取,这个肯定是对的。
第三点,在Qt程序中需要在pro文件中添加头文件以及动态库的。然后需要设置python的目录。
pro文件
INCLUDEPATH += D:/Python27/include/
LIBS += D:/Python27/libs/python27.lib
调用python代码
//调用输出"Hello World"函数
int HelloWorld()
{
Py_SetPythonHome(("./Python27"));
//initialize
Py_Initialize();
//if initialization fails, return
if(!Py_IsInitialized())
{
printf("Py_IsInitialized fail");
return 1;
}
//import module whose name is myModule, that is myModule.py
PyObject *pModule = PyImport_ImportModule("hello");
//if it fails, return
if(!pModule)
{
printf("PyImport_ImportModule fail");
return 2;
}
//import function - myModule.HelloWorld
PyObject * pFuncHello = PyObject_GetAttrString(pModule, "HelloWorld");
//if it fails, return
if(!pFuncHello)
{
printf("PyObject_GetAttrString fail");
return 3;
}
//call function
PyObject_CallFunction(pFuncHello, NULL);
//exit python
Py_Finalize();
return 0;
}