1+1=10

记记笔记,放松一下...

Qt与Python的绑定历史回顾

老生常谈,简单聊聊 PyQt、PySide、PythonQt 都是什么东西...

如果只有两个的话,估计大家更容易理解

  • PyQt:为Python程序添加C++ Qt库支持
  • PythonQt:为C++ Qt程序添加Python脚本支持

但为什么多了一个PySide?其实这个是给像我这样——不喜欢盗版,也不喜欢GPL协议——的个人或小公司的福利。当然还希望有钱的公司还是要多支持Qt商业版本,便于其良性发展。

对比

先简单列个表

特性/维度 PyQt PySide (Qt for Python) PythonQt
开发者 Riverbank Computing The Qt Company MeVis Medical Solutions
最初发布 1990年代后期 2009年(最初版本),2018年重新作为“Qt for Python”发布 2008年左右
许可 GPL 和商业许可 LGPL和商业许可 LGPL
功能 完整支持Qt框架 完整支持Qt框架 功能有限,主要用于嵌入式Python解释器
工具 SIP Shiboken qtscriptgenerator
文档和教程 丰富的文档和教程 官方文档逐渐完善,紧跟Qt官方文档 文档较少,资源有限
生态 历史悠久,社区活跃 逐渐吸引更多用户 小众,主要在特定领域有使用

PyQt

PyQt由Riverbank Computing公司开发,最早版本发布于1998年,历史悠久,社区活跃。

为了完成C++库到Python的绑定,该公司开发了SIP工具,这个工具本身采用BSD授权。

注意:PyQt 采用 GPL 和 商业 双重授权,不支持LGPL。要商用的话,需要先购买授权!

PySide

在Qt支持LGPL之后,因为PyQt不采用LGPL,所有才有了采用LGPL新的项目:PySide。

2009年,我从wxpython转向Qt,就是因为Qt和PySide先后增加了LGPL授权。不过我想不通: 自从和Nokia分家后,Qt官方一直在C++ Qt中淡化LGPL,为什么这时会选择在Qt5.12时复活PySide这一和PyQt高度重合的项目。

诞生与死亡

2008年,Nokia 收购Qt,立即着手给Qt(4.5)增加 LGPL 授权。但是此时PyQt的开发商,不同意同步增加LGPL授权,于是乎,为了推广Qt,当时财大气粗的Nokia MeeGo计算机小组,赞助位于巴西的OpenBossa INdT(Nokia Technology Institute)小组开发采用 LGPL 协议的新的Python绑定,这边有了 PySide。

2009年8月18日,LGPL版本的PySide发布(最初采用Boost的python库进行C++到python的封装,后来改为自己的shiboken)。

2011年8月22日,因为Nokia与微软结盟开发手机操作系统,使得Nokia与Intel联合研发的MeeGo系统遭受重创。进而PySide缺少资金来源(开始发公告,并躺平等死)。

重生

2015年,Christian Tismer开始将PySide从Qt4移植到Qt5。取名PySide2。

2018年,Qt5.12发布时,Qt官方正式同步发布PySide2,商业推广名字 Qt for Python。

2020年,发布PySide6,版本号命名上开始和Qt主版本号一致。

PythonQt

PythonQt 的开发始于2006年,由MeVis Medical Solutions开发。它与PyQt定位不同,设计初衷是为嵌入到C++ Qt应用程序中,以便于为其提供脚本支持。

它使用Qt官方的qtscriptgenerator,这是QtScript的生成器,随着QtScript被放弃(Qml/QJSEngine取代)已经不再活跃。

MeVis Medical Solutions AG 是一家专注于医疗成像软件的公司,总部位于德国。 该公司致力于为医疗领域提供先进的图像处理和可视化解决方案,特别是在帮助医疗专业人员进行诊断、手术规划和治疗监控方面。

这个项目还活着,但是不活跃,因为它能做的事情,PySide/PyQt也能做,只是不如它轻便一点。

参考

暂时放这儿