前言
记录自己如何使用PythonQt。
1.新建一个QWidget项目
文件->新建->项目,其他自己命名即可。
2.设置环境变量
如图,
3.项目设置
把PythonQt的src目录完整复制到MyPythonQtTest项目路径中。
右键项目->属性,打开C/C++。
附加包含目录的值如下
D:\git\test\PythonQt3.2\extensions\PythonQt_QtAll;$(Qt_INCLUDEPATH_);%(AdditionalIncludeDirectories);
D:\VS2015Workspace\MyPythonQtTest\src;
.;
D:\python27_32/PC;
D:\python27_32\include;
E:\QT5.9.9\5.9.9\msvc2015\include;E:\QT5.9.9\5.9.9\msvc2015\include\QtOpenGL;
E:\QT5.9.9\5.9.9\msvc2015\include\QtWidgets;E:\QT5.9.9\5.9.9\msvc2015\include\QtGui;E:\QT5.9.9\5.9.9\msvc2015\include\QtANGLE;E:\QT5.9.9\5.9.9\msvc2015\include\QtTest;
E:\QT5.9.9\5.9.9\msvc2015\include\QtCore;release;E:\QT5.9.9\5.9.9\msvc2015\mkspecs\win32-msvc
然后打开链接器,设置附加库目录
值为
$(Qt_LIBPATH_);%(AdditionalLibraryDirectories);
E:\QT5.9.9\5.9.9\msvc2015\lib;
D:\git\test\PythonQt3.2\lib
注意这里的D:\git\test\PythonQt3.2\lib是我的PythonQt编译成功后生成的lib目录,所以根据自己的实际情况修改。
点击链接器->输入,附加依赖项中的值为
D:\python27_32\libs\python27.lib;
E:\QT5.9.9\5.9.9\msvc2015\lib\qtmain.lib;
D:\git\test\PythonQt3.2\lib\PythonQt-Qt5-Python27.lib;
E:\QT5.9.9\5.9.9\msvc2015\lib\Qt5OpenGL.lib;
E:\QT5.9.9\5.9.9\msvc2015\lib\Qt5Widgets.lib;
E:\QT5.9.9\5.9.9\msvc2015\lib\Qt5Gui.lib;
E:\QT5.9.9\5.9.9\msvc2015\lib\Qt5Test.lib;
E:\QT5.9.9\5.9.9\msvc2015\lib\Qt5Core.lib;%(AdditionalDependencies)
在常规中可以设置输出目录和输出文件名,以确定生成的exe所在目录。
4.编写代码
在Resource files中添加现有项,将PythonQt3.2\examples\PyGuiExample目录下的example.py添加进来。
然后在main.cpp中编写代码
#include "PythonQt.h"
//#include "PythonQt_QtAll.h"
#include "gui/PythonQtScriptingConsole.h"
#include <QApplication>
#include <QWidget>
#include <QMainWindow>
#include <QPushButton>
#include <QLayout>
int main(int argc, char **argv)
{
QApplication qapp(argc, argv);
PythonQt::init(PythonQt::IgnoreSiteModule | PythonQt::RedirectStdOut);
//PythonQt_QtAll::init();
PythonQtObjectPtr mainContext = PythonQt::self()->getMainModule();
PythonQtScriptingConsole console(NULL, mainContext);
// 调用Python脚本,这是一个窗口
mainContext.evalFile(":example.py");
console.show();
return qapp.exec();
}
5.生成
右键项目生成,然后lib目录下出现exe(我设置的输出目录为…\lib,输出文件名字为MyPythonQtTest)。
这是直接点击运行exe是不行的,将pythonQt生成的dll文件放在目录下就可以了。
运行效果如图
总结
lib提供符号表,dll提供具体代码,dll是动态库,在运行时调用。