翻译 | Qt for Python的技术愿景前瞻

本文翻译自Technical vision for Qt for Python - What lies ahead
原文作者:Cristián Maureira-Fredes,Qt公司软件开发工程师
校审: 王富涌、Richard Lin

 

上一篇博文中,我们介绍了Qt的下一个主要版本的技术愿景,我们觉得仅仅用一个段落描述Qt for Python并不足以涵盖我们在未来版本中考虑的所有特性和改进。

 

向Qt 6过渡

将Qt这样的一个庞大的框架暴露到另一种语言并非易事,这也是将旧版本的PySide从Qt 4向Qt 5移植时进展缓慢的主要原因。

开发人员花了大量的时间来适应Qt 5的新的API,更重要的是编写绑定生成器工具以保证所有事情都可以被正确的处理。

Qt 6就不一样了,因为Qt for Python的开发与Qt 6的C++和QML的开发是同步进行的,希望到时发生意外的几率会少很多。实际上在当前Qt 5.x的版本发布中已经体现出来了,PySide2几乎与Qt发行版同时可用,偶尔可能会延迟几天。

自Qt 5.12.0正式发布以来,Qt for Python的下载量日益增加,这也意味着社区对该项目的肯定。



PyPi上的5.12.0稳定版发布以来的下载情况

 


我们为什么开发Qt for Python

最早的几行代码逐渐演变成第一个Qt发行版的日期可以追溯到90年代早期,巧合的是,这与Python的诞生日期大致相同。

这两个项目的出发点都是为了让开发人员的工作更轻松。这两个项目相结合总是一个好主意,自从PySide正式发布以来,我们已经看到了Qt for Python社区的巨大发展。

我们不能自欺欺人而不考虑Python的另一种Qt绑定PyQt。

从PySide开始,我们就一直试图保持与PyQt在源代码上的兼容性。PyQt用户也一直支持PySide,他们表示主要的区别仅仅是更改了导入名称。这让Qt for Python项目的开发者非常开心。

这两组绑定都非常成熟,但是我们想更进一步。事实上,我们已经做出了一些独立分离的决定,比如不暴露QVariant等。

目前,我们为使用Qt for Python的两类开发者提供了以下特性:


C++开发者

  • 快速原型:考虑到某些项目的需求,在不需要太多设置的情况下快速地对一个想法进行原型开发是非常方便的。通常只需要一个pip安装,然后进行pyside2的调用。如果经过一些迭代之后,应用程序确实需要更高性能的行为或强类型语言,那么将代码转换到C++也非常简单。

 

使用PySide2写一个示例程序

 

 

  • 嵌入Python:现有的(Qt/ C++)应用程序可以通过使用Python进行扩展,可以通过一个插件系统,甚至可以通过一个嵌入式解释器来控制应用程序的方方面面。

 

具有嵌入式Python解释器的Qt/ C++应用程序,该解释器通过执行文本代码,可以对Qt/ C++应用程序本身进行修改。

 

 

Python开发者

  • 一个强大的GUI开发框架:使用Python创建图形用户界面有很多选项,但是Qt提供了一个完整而强大的框架,它已经被证明能够完美实现GUI的几乎所有需求。我们一直在跟踪其他模块,从而获得一些更好的想法并做出进一步的贡献,这样就可以在下一个版本中包含这些内容。

 

PySide2安装流程

 

  • 绑定生成:创建Python模块可能是一项困难的任务,目前许多项目都试图提供一个简单的接口来实现这一点。Shiboken现在越来越主流,它可以处理任何C++项目。基于许多客户和用户的经验,我们的工具足以为现有的C++项目提供Python绑定。比如可以看看Gamry Instruments是怎么做的。

 

使用Shiboken编写一个“Hello World”的示例程序

 

 


Qt for Python的未来


自从我们发布了第一个Qt官方的Python/Pyside2以来,我们已经收集了很多反馈。主要观点如下:

 

  • 命名,由于模块的版本控制与Qt for Python相比是一个独立的编号,因此很多时候我们的用户对模块的版本控制会感到困惑,因此我们决定从Qt6开始遵循Qt版本控制。名称本身将保留,因此发行版将是PySide 6。

  • Python2的支持,从2020年开始Python2将不再被维护,我们也做出了同样的决定,一旦PySide6发布,我们将放弃对它的支持。在内部,这将解决我们目前同时处理Python2和Python3的许多问题。

  • Python化,将C++ API暴露给Python模块会让程序员在编写应用程序时产生一种奇怪的感觉。我们想更进一步,尝试消除样板代码,并提供一个类似python的补充API。

  • 工具库,为uic和rcc提供一组单独的工具库毫无意义,因为我们需要跟踪官方工具中的所有更改,并将它们移植到我们的新版本中。将Python集成到官方工具中似乎更好。希望从PySide2 5.14开始,我们能够直接使用Qt的uic和rcc,而不是python包装器。

  • Meta Widgets和实用小工具,为了支持快速开发,我们正在尝试编写一组实用小工具和widgets,这将使Python开发人员的工作更容易。与NumPy、Panda等模块的开箱即用集成也在我们的优先开发计划中。

  • Shiboken,适应Qt6将包含的所有新特性将是我们的主要关注点。幸运的是,我们得到了很多bug的提交修复和新特性的贡献者。因此获得一个更加成熟的Shiboken版本只是时间问题。


您可以通过JIRA (https://bugreports.qt.io/browse/PYSIDE-904, PYSIDE- 904) 列表读到更多的完整信息,我们期望在Qt 6中可用(我们承诺将尽最大的努力去实现☺)。

 

 

我们非常感谢Qt for Python社区所做的一切。我们目前正在开发的大部分功能都来自于它们。考虑到这一点,我们希望您在我们的IRC频道#qt-pyside上交流您的关注点和想法。分享你的想法,让我们一起使Qt for Python变得更好。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值