Qt for Python 6.8:现已发布!
发布时间:2024-11-21




我们非常高兴地宣布 Qt for Python 6.8 的最新发布。每发布一个新版本,我们都会尝试利用Qt的新功能和新的流行理念带来新的惊喜。为方便起见,您可以查看Qt for Python6.8中的新功能和改进功能,以及整个变更日志:https://code.qt.io/cgit/pyside/pyside-setup.git/tree/doc/changelogs/changes-6.8.0(浏览器复制打开)。



在每个版本中,Qt for Python团队都努力在错误修复、功能开发和全新想法之间取得良好的平衡。在此版本中,您将看到一些与改进我们当前产品相关的更改,例如更改 Python可调用的信号连接,为移除Python的GIL做准备,扩展对懒加载的支持以包括智能指针和嵌套类型,以及其他一些小的修复。



我们想重点介绍团队投入时间最多的几项主要任务。


Qt Design Studio兼容性

听说了吗?现在可以使用Python后端轻松运行QtDS项目了!

如果您还没有了解,请查看我们之前的博文,其中介绍了QtDS中的新导出功能,以及新的PySide6_DS包,其中包含了专属的QtQuick组件。此外,您还可以使用 pyside6-deploy部署带有Python后端的Design Studio项目。导出项目后,只需使用安装了PySide6的Python环境,在导出的项目中运行以下命令即可:

pyside6-deploy Python/main.py


减少二进制文件大小

封装Qt库可能会在性能方面带来开销,还会影响安装的大小。在此版本中,我们将二进制大小减少了约10%,但我们相信还有更大的可能,因此我们仍在致力于此项工作。


换个角度来看,对于Linux上的QtCore,Qt二进制文件约为6.8MB,封装二进制文件约为4.4MB。这意味着,如果您要使用PySide中的QtCore,大约需要11.2MB,考虑到应用程序的部署,这可能是嵌入式系统甚至桌面应用程序的一个问题。


我们注意到一些字符串可以被压缩,其他字符串甚至可以被移除,但我们仍在努力将大小进一步缩小,并设法为Qt二进制文件提供一个轻量级封装。


改进我们的Python存根(类型提示)

一些系统性的问题来自Shiboken类型系统中一些dunder 方法的返回类型,它们使用了通用的PyObject*而不是 str。在某些情况下,mypy无法处理重载链中不一致的静态方法。


大部分更新的文件都是我们的示例和教程,其中mypy需要几个小版本之前引入的新枚举才能正确处理这些代码行,即使我们出于兼容性目的而设置了容错模式(例如,我们应该使用Qt.Orientation.Horizonal,而不是 Qt.Horizontal)。


许多关于输入的旧Bug也得到了修复,但在未来的版本中仍有一些问题需要解决。


动态绑定研究

在过去的几个月中,我们一直在研究简化绑定生成过程的方法,更确切地说,是依靠QMetaObject为QObject提供 Python动态绑定。这包括使用QMetaType转换函数参数类型的机制,以及使用自定义转换器扩展其他类型的机制。


这是一个棘手的主题,您需要从Qt方面、CPython方面以及C++方面解决许多细节问题,因此您可以理解,找到适当的平衡可能具有挑战性。


需要做更多工作的一个特定主题是对象所有权的概念,我们已经通过Shiboken解决了这个问题,但这个项目是全新的。我们可以重用其中的一些逻辑,但我们希望避免与当前的产品过于紧密。


我们希望很快在后续博客中讨论这一主题,主要是因为它提供了一种更简单的方法来在Qt/C++应用程序中启用脚本功能。



PySide6 Flatpak Baseapp介绍

虽然不是6.8版独有,但我们一直在努力开发PySide6的Flatpak baseapp。这将使PySide6 Linux开发人员能够毫不费力地使用PySide6创建Flatpak应用程序。


基于强大的KDE SDK构建,baseapp预装了PySide6库,使开发比以往任何时候都更加顺畅。


目前,baseapp只支持PySide6 6.7.3,并且可以在Flathub上随时可用。一旦KDE运行时将Qt版本更新到6.8.0后,baseapp将立即更新到PySide6 6.8.0。


要开始使用,只需运行以下命令: 

flatpak install flathub io.qt.PySide6.BaseApp//6.7

有关使用baseapp创建自己的PySide6应用程序的深入指南,请查看KDE开发人员文档中的精彩教程:https://develop.kde.org/docs/getting-started/python/



适用于PySide6 的Android Wheels

随着PySide6 6.8的发布,您现在可以下载PySide6的 Android轮(预构建的组件和库),它与`pyside6-android-deploy`CLI工具无缝集成。这使得为Android 架构打包PySide6应用程序变得更加容易。在此之前,开发人员必须自己完成交叉编译Android PySide6二进制文件的繁琐过程。这通常被证明是一项具有挑战性且耗时的任务。但是现在,有了预构建的PySide6 Android轮子,这一过程将比以往任何时候都更加简化和方便。


要开始使用,您可以从Qt for Python官方发布页面下载 Android轮子:https://download.qt.io/official_releases/QtForPython/pyside6/


另外,您可以使用即将发布(0.1.4)的qtpip直接下载轮子。 

qtpip download PySide6 --android --arch aarch64


可以下载aarch64轮子,或x86_64轮子

qtpip将输出下载轮子的路径,然后您可以使用 `pyside6-android-deploy`工具打包您的PySide6 Android应用程序。 

pyside6-android-deploy--wheel-pyside=<path_to_pyside6_wheel>--wheel-shiboken=<;path_too_shiboken_wheel> --name <application_name> --ndk-path=<downloaded_ndk_path> --sdk-path=<downloaded_sdk_path>

要了解如何使用pyside6-android-deploy,请参阅官方文档。



新工具:Pyside6-svgtoqml

PySide6对应于svgtoqml工具,可用于将SVG文档转换为QML文件,以便在QtQuick应用程序中使用。

pyside6-svgtoqml <svg_file_to_read> <qml_file_to_write>



本文转自公众号:Qt软件



+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


关于亿道电子

上海亿道电子技术有限公司是国内资深的研发工具软件提供商,公司成立于2009年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。

十多年来,先后与ARM、Altium、Ansys、QT、Green Hills、Minitab、EPLAN、QA Systems、OpenText、Visu-IT、HighTec、PLS、Ashling、MSC Software、Autodesk、Source Insight、IncrediBuild、Lauterbach、Adobe、Testplant、TeamEDA等多家全球知名公司建立战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家中国本土客户,为客户提供从芯片级开发工具、EDA设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式GUI工具等等。亿道电子凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。

欢迎关注“亿道电子”公众号

了解更多研发工具软件知识