本文翻译自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变得更好。

翻译 | Qt for Python的技术愿景前瞻相关推荐

  1. 中国移动技术愿景2020+

    2019独角兽企业重金招聘Python工程师标准>>> 中国移动技术愿景2020+ 本文档白皮书是中国移动提出的在2020年及其之后的若干年内对产业各方面技术发展的构想,包括行业发展 ...

  2. 阿里的技术愿景_技术技能的另一面:领域知识和长期愿景

    阿里的技术愿景 by Sihui Huang 黄思慧 技术技能的另一面:领域知识和长期愿景 (The other side of technical skill: domain knowledge a ...

  3. Qt混合Python开发技术:Python介绍、混合过程和Demo

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/109474663 各位读者,知识无穷而人力有穷 ...

  4. 蚂蚁金服 CTO 程立登台新加坡 Money 20/20 Asia,传递技术让世界更平等的愿景

    2018 年 3 月 13 日,全球顶级支付金融类行业峰会 Money 20/20 Asia 正式在新加坡召开,蚂蚁金服 CTO 兼国际事业群 COO 程立登台做主题演讲,"技术让世界更平等 ...

  5. IMT-2030(6G)推进组发布《6G总体愿景与潜在关键技术》白皮书

    来源:中国信通院CATCT 编辑:蒲蒲 当前,新一轮科技革命和产业变革突飞猛进,随着5G商用的大规模部署,全球业界已开启对下一代移动通信(6G)的探索研究.日前,IMT-2030(6G)推进组(以下简 ...

  6. 斑马技术发布《2022年中国医院愿景研究》:未来5年,超过90%的临床医生将采用移动技术...

    全球医疗保健行业似乎正面临不可逾越的挑战:从人口老龄化和专业护理人员用工短缺,到不断增长的成本,给医院.医生.护理人员.患者和社区带来巨大压力.细化到具体问题,如何最大限度提升医护人员工作效率?如何尽 ...

  7. 德勤发布最新元宇宙报告:愿景、技术和应对

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 2021-2022元宇宙报告:化身与智造,元宇宙坐标解析 清华大学:元宇宙发展研究报告2.0版.pdf 北京大学 ...

  8. 德勤元宇宙综观:愿景、技术和应对

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 2021-2022元宇宙报告:化身与智造,元宇宙坐标解析 清华大学:元宇宙发展研究报告2.0版.pdf 北京大学 ...

  9. 创新数据库技术 成就IOD愿景携DB2 25载创新 IBM推新“信息议程”

    IBM DB2诞生25周年庆典大会在京召开   (2008年9月23日,北京)IBM(NYSE:IBM)今天在北京召开"IBM DB2诞生25周年纪念大会",与各界来宾共庆IBM信 ...

最新文章

  1. 化工学python_化工计算与软件应用(第2版) PDF
  2. 程序员MM的自白:磨人小妖精之安卓碎片化
  3. [转]PageRank算法
  4. Python中用dict统计列表中元素出现的次数
  5. 6部BBC “教材级” 地理纪录片,有生之年必看系列!
  6. Servlet的配置
  7. 快速排序quicksort算法优化
  8. 电子商务系统的设计与实现(五):账务系统的功能接口设计
  9. 线程演示生产者和消费者的一个例子
  10. 3分钟tips:协方差和相关系数的异同
  11. linux看门狗机制
  12. 2022年计算机软件水平考试软件设计师(中级)练习题及答案
  13. matlab模拟厄米高斯光束,拉盖尔高斯光束_厄米高斯光束MATLAB仿真.pdf
  14. 博客导航——一站式搜索
  15. codesys file读写配置参数程序
  16. 我奋斗了18年还是不能和你坐在一起喝咖啡
  17. 浏览器报ScriptResource.axd异常
  18. GNU和LINUX到底怎么个发音?
  19. uni-app 封装接口 405错误
  20. tomcat点击startup.bat闪退

热门文章

  1. java如何输出大小不同的字_Eclipse下中英文字体大小不一致,如何解决
  2. NotePlan for Mac如何修复iCloud同步问题
  3. k8S中的MySQL如何扩容_Kubernetes 中进行 PVC 的扩容 互联网技术圈 互联网技术圈
  4. lorem ipsum_在我们的雷达上:独家电子邮件,PHP数字垃圾和Ipsum
  5. 00003 不思议迷宫.0008:分析了半天我们能干什么?
  6. 6.18科技新闻(2)
  7. 鹏业软件安装算量计算规则,喷淋识别、以及保温设置的问题解决
  8. 一些关于三角函数的公式
  9. Jquery的简单使用
  10. 使用私服管理jar时,下载jar出现 lastUpdated问题 maven