
我們非常高興地宣布 Qt for Python 6.8 的最新發(fā)布。每發(fā)布一個(gè)新版本,我們都會(huì)嘗試?yán)肣t的新功能和新的流行理念帶來(lái)新的驚喜。為方便起見,您可以查看Qt for Python6.8中的新功能和改進(jìn)功能,以及整個(gè)變更日志:https://code.qt.io/cgit/pyside/pyside-setup.git/tree/doc/changelogs/changes-6.8.0(瀏覽器復(fù)制打開)。
在每個(gè)版本中,Qt for Python團(tuán)隊(duì)都努力在錯(cuò)誤修復(fù)、功能開發(fā)和全新想法之間取得良好的平衡。在此版本中,您將看到一些與改進(jìn)我們當(dāng)前產(chǎn)品相關(guān)的更改,例如更改 Python可調(diào)用的信號(hào)連接,為移除Python的GIL做準(zhǔn)備,擴(kuò)展對(duì)懶加載的支持以包括智能指針和嵌套類型,以及其他一些小的修復(fù)。
我們想重點(diǎn)介紹團(tuán)隊(duì)投入時(shí)間最多的幾項(xiàng)主要任務(wù)。
Qt Design Studio兼容性
聽說(shuō)了嗎?現(xiàn)在可以使用Python后端輕松運(yùn)行QtDS項(xiàng)目了!
如果您還沒(méi)有了解,請(qǐng)查看我們之前的博文,其中介紹了QtDS中的新導(dǎo)出功能,以及新的PySide6_DS包,其中包含了專屬的QtQuick組件。此外,您還可以使用 pyside6-deploy部署帶有Python后端的Design Studio項(xiàng)目。導(dǎo)出項(xiàng)目后,只需使用安裝了PySide6的Python環(huán)境,在導(dǎo)出的項(xiàng)目中運(yùn)行以下命令即可:
pyside6-deploy Python/main.py
減少二進(jìn)制文件大小
封裝Qt庫(kù)可能會(huì)在性能方面帶來(lái)開銷,還會(huì)影響安裝的大小。在此版本中,我們將二進(jìn)制大小減少了約10%,但我們相信還有更大的可能,因此我們?nèi)栽谥铝τ诖隧?xiàng)工作。
換個(gè)角度來(lái)看,對(duì)于Linux上的QtCore,Qt二進(jìn)制文件約為6.8MB,封裝二進(jìn)制文件約為4.4MB。這意味著,如果您要使用PySide中的QtCore,大約需要11.2MB,考慮到應(yīng)用程序的部署,這可能是嵌入式系統(tǒng)甚至桌面應(yīng)用程序的一個(gè)問(wèn)題。
我們注意到一些字符串可以被壓縮,其他字符串甚至可以被移除,但我們?nèi)栽谂⒋笮∵M(jìn)一步縮小,并設(shè)法為Qt二進(jìn)制文件提供一個(gè)輕量級(jí)封裝。
改進(jìn)我們的Python存根(類型提示)
一些系統(tǒng)性的問(wèn)題來(lái)自Shiboken類型系統(tǒng)中一些dunder 方法的返回類型,它們使用了通用的PyObject*而不是 str。在某些情況下,mypy無(wú)法處理重載鏈中不一致的靜態(tài)方法。
大部分更新的文件都是我們的示例和教程,其中mypy需要幾個(gè)小版本之前引入的新枚舉才能正確處理這些代碼行,即使我們出于兼容性目的而設(shè)置了容錯(cuò)模式(例如,我們應(yīng)該使用Qt.Orientation.Horizonal,而不是 Qt.Horizontal)。
許多關(guān)于輸入的舊Bug也得到了修復(fù),但在未來(lái)的版本中仍有一些問(wèn)題需要解決。
動(dòng)態(tài)綁定研究
在過(guò)去的幾個(gè)月中,我們一直在研究簡(jiǎn)化綁定生成過(guò)程的方法,更確切地說(shuō),是依靠QMetaObject為QObject提供 Python動(dòng)態(tài)綁定。這包括使用QMetaType轉(zhuǎn)換函數(shù)參數(shù)類型的機(jī)制,以及使用自定義轉(zhuǎn)換器擴(kuò)展其他類型的機(jī)制。
這是一個(gè)棘手的主題,您需要從Qt方面、CPython方面以及C++方面解決許多細(xì)節(jié)問(wèn)題,因此您可以理解,找到適當(dāng)?shù)钠胶饪赡芫哂刑魬?zhàn)性。
需要做更多工作的一個(gè)特定主題是對(duì)象所有權(quán)的概念,我們已經(jīng)通過(guò)Shiboken解決了這個(gè)問(wèn)題,但這個(gè)項(xiàng)目是全新的。我們可以重用其中的一些邏輯,但我們希望避免與當(dāng)前的產(chǎn)品過(guò)于緊密。
我們希望很快在后續(xù)博客中討論這一主題,主要是因?yàn)樗峁┝艘环N更簡(jiǎn)單的方法來(lái)在Qt/C++應(yīng)用程序中啟用腳本功能。
PySide6 Flatpak Baseapp介紹
雖然不是6.8版獨(dú)有,但我們一直在努力開發(fā)PySide6的Flatpak baseapp。這將使PySide6 Linux開發(fā)人員能夠毫不費(fèi)力地使用PySide6創(chuàng)建Flatpak應(yīng)用程序。
基于強(qiáng)大的KDE SDK構(gòu)建,baseapp預(yù)裝了PySide6庫(kù),使開發(fā)比以往任何時(shí)候都更加順暢。
目前,baseapp只支持PySide6 6.7.3,并且可以在Flathub上隨時(shí)可用。一旦KDE運(yùn)行時(shí)將Qt版本更新到6.8.0后,baseapp將立即更新到PySide6 6.8.0。
要開始使用,只需運(yùn)行以下命令:?
flatpak install flathub io.qt.PySide6.BaseApp//6.7
有關(guān)使用baseapp創(chuàng)建自己的PySide6應(yīng)用程序的深入指南,請(qǐng)查看KDE開發(fā)人員文檔中的精彩教程:https://develop.kde.org/docs/getting-started/python/
適用于PySide6 的Android Wheels
隨著PySide6 6.8的發(fā)布,您現(xiàn)在可以下載PySide6的 Android輪(預(yù)構(gòu)建的組件和庫(kù)),它與`pyside6-android-deploy`CLI工具無(wú)縫集成。這使得為Android 架構(gòu)打包PySide6應(yīng)用程序變得更加容易。在此之前,開發(fā)人員必須自己完成交叉編譯Android PySide6二進(jìn)制文件的繁瑣過(guò)程。這通常被證明是一項(xiàng)具有挑戰(zhàn)性且耗時(shí)的任務(wù)。但是現(xiàn)在,有了預(yù)構(gòu)建的PySide6 Android輪子,這一過(guò)程將比以往任何時(shí)候都更加簡(jiǎn)化和方便。
要開始使用,您可以從Qt for Python官方發(fā)布頁(yè)面下載 Android輪子:https://download.qt.io/official_releases/QtForPython/pyside6/
另外,您可以使用即將發(fā)布(0.1.4)的qtpip直接下載輪子。?
qtpip download PySide6 --android --arch aarch64
可以下載aarch64輪子,或x86_64輪子
qtpip將輸出下載輪子的路徑,然后您可以使用 `pyside6-android-deploy`工具打包您的PySide6 Android應(yīng)用程序。?
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,請(qǐng)參閱官方文檔。
新工具:Pyside6-svgtoqml
PySide6對(duì)應(yīng)于svgtoqml工具,可用于將SVG文檔轉(zhuǎn)換為QML文件,以便在QtQuick應(yīng)用程序中使用。
pyside6-svgtoqml <svg_file_to_read> <qml_file_to_write>
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
關(guān)于億道電子
上海億道電子技術(shù)有限公司是國(guó)內(nèi)資深的研發(fā)工具軟件提供商,公司成立于2009年,面向中國(guó)廣大的制造業(yè)客戶提供研發(fā)、設(shè)計(jì)、管理過(guò)程中使用的各種軟件開發(fā)工具,致力于幫助客戶提高研發(fā)管理效率、縮短產(chǎn)品設(shè)計(jì)周期,提升產(chǎn)品可靠性。
十多年來(lái),先后與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等多家全球知名公司建立戰(zhàn)略合作伙伴關(guān)系,并作為他們?cè)谥袊?guó)區(qū)的主要分銷合作伙伴服務(wù)了數(shù)千家中國(guó)本土客戶,為客戶提供從芯片級(jí)開發(fā)工具、EDA設(shè)計(jì)工具、軟件編譯以及測(cè)試工具、結(jié)構(gòu)設(shè)計(jì)工具、仿真工具、電氣設(shè)計(jì)工具、以及嵌入式GUI工具等等。億道電子憑借多年的經(jīng)驗(yàn)積累,真正的幫助客戶實(shí)現(xiàn)了讓研發(fā)更簡(jiǎn)單、更可靠、更高效的目標(biāo)。

歡迎關(guān)注“億道電子”公眾號(hào)
了解更多研發(fā)工具軟件知識(shí)