皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

Qt for Python 版本:6.8 现已发布!

Qt for Python 版本:6.8 现已发布!

我们非常高兴地宣布 Qt for Python 6.8 的最新版本。对于每个新版本,我们都会尝试通过 Qt 的新功能和新的趋势理念带来伟大的东西。为方便起见,您可以查看 Qt for Python 6.8 中的新增功能和改进内容,以及整个更改日志 

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

我们想强调团队投入最多时间的一些主要任务。

Qt Design Studio 兼容性

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

如果您还没有,请查看我们之前的博客文章,了解 QtDS 中的新导出功能,以及包含其临时 QtQuick 组件的新 PySide6_DS 包。此外,您可以使用 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 二进制文件提供轻量级包装器。

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

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

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

许多有关键入的旧错误也已修复,但在将来的版本中仍有一些事情要做。

动态绑定研究

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

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

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

我们希望在不久的将来能写关于这个主题的博客,主要是因为它提供了一种在 Qt/C++ 应用程序中启用脚本功能的简单方法。

 

介绍 PySide6 Flatpak Baseapp!

虽然并非 6.8 版本独有,但我们一直在努力为 PySide6 开发 Flatpak 基础应用程序。这使 PySide6 Linux 开发人员能够使用 PySide6 轻松创建 Flatpak 应用程序。该 baseapp 基于强大的 KDE SDK 构建,预装了 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 Wheels,它与“pyside6-android-deploy”CLI 工具无缝集成。这使得为 Android 架构打包 PySide6 应用程序变得更加容易。以前,开发人员必须自己完成交叉编译 Android PySide6 二进制文件的繁琐过程。事实证明,这通常是一项具有挑战性且耗时的任务。但现在,随着预构建的 PySide6 Android wheel 的推出,该过程比以往任何时候都更简化且更易于访问 

首先,您可以从 Qt for Python 官方发布页面下载 Android Wheels:https://download.qt.io/official_releases/QtForPython/pyside6/

或者,您可以使用即将发布的 qtpip 版本 (0.1.4) 直接下载 wheels。 

qtpip download PySide6 --android --arch aarch64   

用于 AACH64 车轮,或 F或 x86_64 车轮。 

qtpip 将输出下载的 wheel 的路径,然后您可以将其与“pyside6-android-deploy”工具一起使用,以打包适用于 Android 的 PySide6 应用程序。 

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

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

新工具:pyside6-svgtoqml 

svgtoqml 工具的 PySide6 对应物 ,可用于将 SVG 文档转换为可从 QtQuick 应用程序使用的 QML 文件。  

pyside6-svgtoqml <svg_file_to_read> <qml_file_to_write> 

未来规划 

在接下来的版本中,我们希望专注于改进我们当前的产品,但与此同时,我们将在我们的工具中做更多的工作,以简化 PySide 开发人员的编程决策,但我们也将探索与 Python 交互的新方法。

关于最后一个主题,我们一直在研究一些简化 Qt 和 Python 开发的方法,主要是为了在编写简单的应用程序时减少样板代码的数量,同时也是为了提供更独立的机制来向 UI 添加逻辑。

让我们保持联系!

我们希望继续尝试新的实验性支持、功能和 Python 模块集成。我们下一步应该做什么?给我们留言或在 JIRA 👍 上提出建议。

我们希望您喜欢这个版本,并一如既往地访问我们的社区平台,如果有什么事情不正常,请通过打开错误报告告诉我们。

转自 Qt for Python release: 6.8 is out now!