Raspberry Pi で Qt for Python を動かす

ラズパイで動くGUIアプリをPythonで書いてみたいなと思い、ネット徘徊。

Qt Designerで.uiファイルを作って、Qtを呼び出すPythonパッケージを使うのが良さそうです。
Qtを呼び出すPythonパッケージは、

の2種類あるみたい。
PySideがQt for Pythonという名前でQtオフィシャルが提供しているようなので、これを使ってみましょう。

ここにPySide2の説明がありました。
「Qt for PythonにはPyQt5、PySide、PySide2などのパッケージがあります。PySideはQt4までの旧バージョン、PyQt5はQt5対応して十分使えます。(というか、今までの主流です) しかしながら最近(確かQt 5.11から?)Qtが正式にPython対応しました。これにより公開されたパッケージがPySide2であり、Qt for Python環境としての公式実装とされているようです。」

Qt for Python

ここがオフィシャルなドキュメント。

doc.qt.io

インストールは、、、インストールは、、、
これみたい。

forum.qt.io

いざ、インストール!!

まずは、Raspberry Pi ImagerでクリーンなRaspbianのSDカードを作ります。
f:id:matsujirushix:20210410211401p:plain

そして、apt update。

$ sudo apt update

長ーいコマンドを入力して、Qt for Pythonをインストール。

$ sudo apt-get install python3-pyside2.qt3dcore python3-pyside2.qt3dinput python3-pyside2.qt3dlogic python3-pyside2.qt3drender python3-pyside2.qtcharts python3-pyside2.qtconcurrent python3-pyside2.qtcore python3-pyside2.qtgui python3-pyside2.qthelp python3-pyside2.qtlocation python3-pyside2.qtmultimedia python3-pyside2.qtmultimediawidgets python3-pyside2.qtnetwork python3-pyside2.qtopengl python3-pyside2.qtpositioning python3-pyside2.qtprintsupport python3-pyside2.qtqml python3-pyside2.qtquick python3-pyside2.qtquickwidgets python3-pyside2.qtscript python3-pyside2.qtscripttools python3-pyside2.qtsensors python3-pyside2.qtsql python3-pyside2.qtsvg python3-pyside2.qttest python3-pyside2.qttexttospeech python3-pyside2.qtuitools python3-pyside2.qtwebchannel python3-pyside2.qtwebsockets python3-pyside2.qtwidgets python3-pyside2.qtx11extras python3-pyside2.qtxml python3-pyside2.qtxmlpatterns python3-pyside2uic

数分で完了。
あっさり終わった。本当に大丈夫なのか?

動作確認

オフィシャルなドキュメントのQuick startに沿って、動作確認します。

こちらのコードでバージョンを確認しました。

$ python3 qt-version.py
5.11.2
5.11.3
$

5.15かな?と思っていたけど、5.11だった。ちょっと古い。

つぎはこちらのコードを実行。

$ python3 qt-test.py
qt.qpa.screen: QXcbConnection: Could not connect to display 
Could not connect to any X display.
$

あぁ、VSCode-SSHだからGUIが出ないですね。
次の環境変数を設定してから

$ export DISPLAY=:0.0

実行すると、ラズパイに接続しているディスプレイにアプリのGUIが表示されました。←画面ショット取り忘れ