基于 NXP iMX8MP 平臺簡單測試 PySide6 應用

By Toradex秦海

1).?簡介

Python binding?的?Qt GUI?庫一直以來有兩種卖鲤,最初是由?Riverbank Computing?公司在?2000?年初發(fā)布,基于?Qt4?版本推出的?PyQt4,后來隨著?Qt?庫版本的演進也陸續(xù)跟進到?PyQt5?和最新的?PyQt6荠察,由于發(fā)布的比較早其代碼成熟以及文檔完善的也比較早蚤霞,之前我們也寫過?PyQt5?測試的相關(guān)文章,但是?PyQt?的?License?相對比較嚴格安券,是?GPLv3?和?Commercial?兩種墩崩,所以如果是商業(yè)產(chǎn)品開發(fā)使用,不購買?Commercial License?就要開源整個應用侯勉。


基于這種情況鹦筹,Qt官方早至?Nokia?時期的?2009?年就發(fā)布了對應?Pyqt?的?Python binding?項目?PySide,采用?LGPL License?址貌;然后到了?Qt Digia?時期的?2015年盛龄,才發(fā)布了?PySide 1.2.x?版本,對應?Qt4.8.x?版本芳誓;但是由于推出的時間比較晚等原因余舶,Pyside 1.x?的流行度并不太好。接下來?Qt?基于新發(fā)布的?Qt5?版本锹淌,啟動?Qt for Python?項目匿值,最終基于?Qt 5.12.x?發(fā)布了?PySide2,由于支持?LGPL License以及?Qt?官方的支持赂摆,PySide2?逐漸成熟文檔也日趨完善挟憔,接受度也越來越高钟些。然后針對最新的?Qt6?版本,Qt for Python?項目也繼續(xù)從?Qt 6.6?版本開始發(fā)布了最新的?PySide6?版本绊谭,本文就基于?NXP i.MX8M plus處理器平臺簡單測試?PySide6?的部署運行政恍。


本文所演示的平臺來自于?Toradex?Verdin?i.MX8MP?嵌入式平臺。



2.?準備

a).?Verdin i.MX8MP ARM核心版配合Dahlia載板达传,并連接調(diào)試串口和?HDMI?顯示器用于測試篙耗。



3).?Verdin?i.MX8MP?Yocto?Linux?編譯部署

a).?首先參考這里說明創(chuàng)建?Yocto/Openembedded?編譯框架,當前最新版本是對應于?Toradex Yocto Linux BSP 6.x?版本的?kirkstone-6.x.y branch宪赶。


b).?由于默認配置只包含了?meta-qt5 layer宗弯,因此需要參考如下操作將?meta-qt5?替換為 包含?PySide6?支持在內(nèi)的?meta-qt6 layer,本文測試基于?Qt 6.6.x?版本搂妻,可以跟進實際需求改為不低于?Qt 6.6?的版本蒙保。

-------------------------------

###?移除?meta-qt5 layer ###

$ cd <OE_ROOT_PATH>/layers

$ rm -rf meta-qt5

### add meta-qt6 layer ###

$ git clone -b 6.6.3 git://code.qt.io/yocto/meta-qt6.git


### add meta-clang layer for PySide6 ###

$ git clone -b kirkstone?https://github.com/kraj/meta-clang.git

-------------------------------


c).?參考這里文章說明增加?packagegroup-tdx-qt6.bb?和?tdx-reference-multimedia-qt6-image.bb?文件


d).?修改?bblayers.conf?和?local.conf?文件

-------------------------------

### modify bblayer.conf###

--- a/build/conf/bblayers.conf ?2023-03-30 11:13:22.946533642 +0800

+++ b/build/conf/bblayers.conf ?2023-03-28 16:01:12.614534560 +0800

@@ -34,7 +34,7 @@

${TOPDIR}/../layers/meta-openembedded/meta-python \

${TOPDIR}/../layers/meta-freescale-distro \

${TOPDIR}/../layers/meta-toradex-demos \

- ?${TOPDIR}/../layers/meta-qt5 \

+ ?${TOPDIR}/../layers/meta-qt6 \

+ ?${TOPDIR}/../layers/meta-clang\

\

\

${TOPDIR}/../layers/meta-toradex-distro \


### add below to local.conf ###

# remove x11 related

DISTRO_FEATURES:remove = " directfb x11"


#?add python3/python3-pyside6?and Chinese fonts?support

IMAGE_INSTALL:append = " python3 python3-pip python3-pyside6 python3-numpy ttf-droid-sans ttf-droid-sans-fallback ttf-droid-sans-mono ttf-droid-serif freetype"


#?enablegstreamer?for qtmultimedia if needed

PACKAGECONFIG:append:pn-qtmultimedia = " gstreamer"


# add Freescale EULA

ACCEPT_FSL_EULA = "1"

-------------------------------


e).?編譯?YoctoLinux?image

-------------------------------

###compile?Reference-Multimedia?image###

$?MACHINE="verdin-imx8mp"?bitbake?tdx-reference-multimedia-qt6-image


###?compile SDK###

$?MACHINE="verdin-imx8mp"?bitbake?tdx-reference-multimedia-qt6-image?-c populate_sdk

-------------------------------


f).?YoctoLinux?image部署

參考這里通過Toradex?Easy?installer將上面編譯好的image更新部署到模塊



4).?PySide6 Example應用獲取和測試

a).?Qt?官方網(wǎng)站這里提供了豐富的?PySide6 Examples?示例應用,更多開發(fā)指導文檔可以參考如下:

https://doc.qt.io/qtforpython-6.6/index.html


b).?分別使用一個?Qt?Multimedia?應用和一個?Qt?Charts?應用進行測試

./?Qt?Multimedia?應用?–?詳細說明請參考這里欲主,可以從頁面直接下載應用?mediaplayer?文件夾并上傳到Verdin?i.MX8MP Yocto Linux /home/root?目錄

./ Qt?Charts?應用?–?詳細說明請參考這里邓厕,可以從頁面直接下載應用?chartthemes?文件夾并上傳到Verdin?i.MX8MP Yocto Linux /home/root?目錄


c).?創(chuàng)建開機自啟動systemd?service文件

-------------------------------

[Unit]

Description=Start a wayland application

After=weston.service

Requires=weston.service


[Service]

Type=simple

User=root

PAMName=login

Environment=WAYLAND_DISPLAY=/run/wayland-0

Environment=QT_QPA_PLATFORM=wayland-egl

### if is mediaplayer app

ExecStart=python3 /home/root/mediaplayer/mediaplayer.py

### if is chartthemes app

ExecStart=python3 /home/root/chartthemes/main.py

Restart=on-failure

RestartSec=1


[Install]

WantedBy=graphical.target

-------------------------------


d). enable service?并測試

-------------------------------

$?systemctl enable wayland-app-launch

$?reboot

-------------------------------


e).?重啟后分別啟動?mediaplayer?和?chartthemes?應用效果如下


//?注意下如果要使用?mediaplayer?播放視頻文件,由于?QtMultimedia 6.6?版本播放媒體需要調(diào)用?Gstreamer videoconvertscale?元件扁瓢,而這個元件是要?Gstreamer 1.22?版本以上才支持邑狸,如果當前?Yocto?版本中支持的版本過低需要通過單獨升級?Gstreamer?或者整體升級?Yocto?版本來滿足。


5).?總結(jié)

本文基于?NXP i.MX8MP?處理器簡單演示了?PySide6?應用的部署運行涤妒。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末单雾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子她紫,更是在濱河造成了極大的恐慌硅堆,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贿讹,死亡現(xiàn)場離奇詭異渐逃,居然都是意外死亡,警方通過查閱死者的電腦和手機民褂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門茄菊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赊堪,你說我怎么就攤上這事面殖。” “怎么了哭廉?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵脊僚,是天一觀的道長。 經(jīng)常有香客問我遵绰,道長辽幌,這世上最難降的妖魔是什么增淹? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮乌企,結(jié)果婚禮上虑润,老公的妹妹穿的比我還像新娘。我一直安慰自己加酵,他們只是感情好拳喻,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著虽画,像睡著了一般。 火紅的嫁衣襯著肌膚如雪荣病。 梳的紋絲不亂的頭發(fā)上码撰,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音个盆,去河邊找鬼脖岛。 笑死,一個胖子當著我的面吹牛颊亮,可吹牛的內(nèi)容都是我干的柴梆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼终惑,長吁一口氣:“原來是場噩夢啊……” “哼绍在!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起雹有,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤偿渡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后霸奕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溜宽,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年质帅,在試婚紗的時候發(fā)現(xiàn)自己被綠了适揉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡煤惩,死狀恐怖嫉嘀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情魄揉,我是刑警寧澤吃沪,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站什猖,受9級特大地震影響票彪,放射性物質(zhì)發(fā)生泄漏红淡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一降铸、第九天 我趴在偏房一處隱蔽的房頂上張望在旱。 院中可真熱鬧,春花似錦推掸、人聲如沸桶蝎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽登渣。三九已至,卻和暖如春毡泻,著一層夾襖步出監(jiān)牢的瞬間胜茧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工仇味, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留呻顽,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓丹墨,卻偏偏與公主長得像廊遍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子贩挣,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容