扩展框架

基于Python插件的C++扩展框架

时光总嘲笑我的痴心妄想 提交于 2019-11-30 05:22:51
这里介绍一种典型的C++应用框架,使用Python进行扩展。比如GIMP/Blender/QGIS等等Linux上面的开源软件,还有很多商业软件也采用了这一技术路线。但是由于Python的灵活性,可以使用C/C++直接扩展,或者基于SWIG、PyQt、PythonQt进行扩展,导致具体实现上存在较大的差异。大部分的关于Python插件介绍都是关于Python本身的,因为Pytho是个动态语言,实现这一点并不难(参考: http://my.oschina.net/u/2306127/blog/489795 ),但在很多应用中,对性能要求较高,一般需要用C/C++来实现。然后,把Python解释引擎嵌入进去,方便用户进行参数定制、功能扩展和模块组装。 这里介绍一个笔者摸索的使用Qt+SIP+PyQt+Python的技术路线,是功能比较强大、技术成熟、封装工作量相对较小的一种,而且具有商业级的发展潜力。 一、插件体系的组成 1.1 主程序对象的Python封装 一般情况下,我们把主程序的C++类通过SIP进行封装,然后就可以在Python Shell中通过Python直接调用了。 1.2 集成脚本控制台和编辑窗口 然后再把Python的控制台集成到主程序窗口中,就可以直接通过Python控制主窗口的操作。这里需要干两件事情,一是把控制台窗口嵌入主窗口中