Stay up to date with the latest marketing, sales and service tips and news.
我们非常高兴地宣布 Qt for Python 6.8 的最新发布。每发布一个新版本,我们都会尝试利用 Qt 的新功能和新的流行理念带来新的惊喜。为方便起见,您可以查看 Qt for Python 6.8 中的新功能和改进功能,以及整个变更日志。
在每个版本中,Qt for Python 团队都努力在错误修复、功能开发和全新想法之间取得良好的平衡。在此版本中,您将看到一些与改进我们当前产品相关的更改,例如更改 Python 可调用的信号连接,为移除 Python 的 GIL 做准备,扩展对懒加载的支持以包括智能指针和嵌套类型,以及其他一些小的修复。我们想重点介绍团队投入时间最多的几项主要任务。
您听说了吗?您现在可以使用 Python 后端轻松运行 QtDS 项目了!
如果您还没有了解,请查看 我们之前的博文,其中介绍了 QtDS 中的新导出功能,以及新的PySide6_DS包,其中包含了专属的QtQuick组件。此外,您还可以使用 pyside6-deploy 部署带有 Python 后端的 Design Studio 项目。导出项目后,只需使用安装了 PySide6 的 Python 环境,在导出的项目中运行以下命令即可:
pyside6-deploy Python/main.py
封装 Qt 库可能会在性能方面带来开销,还会影响安装的大小。在此版本中,我们将二进制大小减少了约 10%,但我们相信还有更大的可能,因此我们仍在致力于此项工作。
换个角度来看,对于 Linux 上的 QtCore,Qt 二进制文件约为 6.8 MB,封装二进制文件约为 4.4 MB。这意味着,如果您要使用 PySide 中的 QtCore,大约需要 11.2 MB,考虑到应用程序的部署,这可能是嵌入式系统甚至桌面应用程序的一个问题。
我们注意到一些字符串可以被压缩,其他字符串甚至可以被移除,但我们仍在努力将大小进一步缩小,并设法为 Qt 二进制文件提供一个轻量级封装。
一些系统性的问题来自 Shiboken 类型系统中一些 dunder 方法的返回类型,它们使用了通用的 PyObject* 而不是 str。在某些情况下,mypy 无法处理重载链中不一致的静态方法。
大部分更新的文件都是我们的示例和教程,其中mypy需要几个小版本之前引入的新枚举才能正确处理这些代码行,即使我们出于兼容性目的而设置了容错模式(例如,我们应该使用Qt.Orientation.Horizonal,,而不是 Qt.Horizontal)。
许多关于输入的旧Bug也得到了修复,但在未来的版本中仍有一些问题需要解决。
在过去的几个月中,我们一直在研究简化绑定生成过程的方法,更确切地说,是依靠 QMetaObject 为 QObject 提供 Python 动态绑定。这包括使用 QMetaType 转换函数参数类型的机制,以及使用自定义转换器扩展其他类型的机制。
这是一个棘手的主题,您需要从 Qt 方面、CPython 方面以及 C++ 方面解决许多细节问题,因此您可以理解,找到适当的平衡可能具有挑战性。
需要做更多工作的一个特定主题是对象所有权的概念,我们已经通过 Shiboken 解决了这个问题,但这个项目是全新的。我们可以重用其中的一些逻辑,但我们希望避免与当前的产品过于紧密。
我们希望很快在后续博客中讨论这一主题,主要是因为它提供了一种更简单的方法来在 Qt/C++ 应用程序中启用脚本功能。
虽然不是 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 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工具,可用于将SVG文档转换为QML文件,以便在QtQuick应用程序中使用。
pyside6-svgtoqml <svg_file_to_read> <qml_file_to_write>
在接下来的版本中,我们将专注于改进现有产品,但同时我们也将在工具方面投入更多精力,以简化 PySide 开发人员的编程决策,同时我们也将探索与 Python 交互的新方式。
关于最后一个主题,我们一直在研究一些简化 Qt 和 Python 开发的方法,主要是为了在编写简单应用程序时减少模板代码的数量,同时也是为了提供一种更加独立的机制来为 UI 添加逻辑。
我们希望继续尝试新的实验支持、功能和 Python 模块集成。我们下一步应该做什么?请给我们留言或在 JIRA提交建议 👍。
我们希望您喜欢该版本,并一如既往地访问我们的社区平台。如果某些功能无法正常工作,请提交打开错误报告告知我们。
Stay up to date with the latest marketing, sales and service tips and news.
Download the latest release here: www.qt.io/download.
Qt 6 was created to be the productivity platform for the future, with next-gen 2D & 3D UX and limitless scalability.
Find webinars, use cases, tutorials, videos & more at resources.qt.io
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.
Näytä tämä julkaisu Instagramissa.Henkilön Qt (@theqtcompany) jakama julkaisu
Qt Group includes The Qt Company Oy and its global subsidiaries and affiliates.