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