MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Qtその他 - PySide6のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Qtその他 - PySide6
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == PySide6は、Qt for PythonプロジェクトのPython公式モジュールであり、Qt 6以降のフレームワーク全体にアクセスすることができる。<br> Qt for Pythonプロジェクトはオープンに開発されており、全てのコードがgitリポジトリにあり、オープンな設計プロセスがある等、最新のOSSプロジェクトで期待される全てのモジュールが整っている。<br> <br> Qt 5との互換性については、PySide2のページを参照すること。<br> <br><br> == PySide6のインストール == ※注意<br> PySide6を使用するには、Python 3.8以降が必要となる。<br> <br> ==== Clangのインストール ==== PySide6では、ClangベースのC++パーサを使用しているため、ビルドにはClang 13.0以降が必要である。<br> プリビルドバージョンは、[https://download.qt.io/development_releases/prebuilt/libclang/ Qtの公式Webサイト]からダウンロードできる。<br> なお、Windows、MacOS、Linux (RHEL、Ubuntu、Debian) が対応している。<br> <br> # Winodws + Visual Studiio 2022 libclang-release_<バージョン>-based-windows-vs2022_arm64.7z # Linux # Debian GNU/Linux向けはAarch64のみであることに注意 libclang-release_<バージョン>-based-linux-Rhel<バージョン>-gcc<バージョン>-x86_64.7z libclang-release_<バージョン>-based-linux-Ubuntu<バージョン>-gcc<バージョン>-x86_64.7z libclang-release_<バージョン>-based-linux-Debian-<バージョン>-gcc<バージョン>-arm64.7z <br> ダウンロードしたファイルを解凍する。<br> 7z x libclang-release_* <br> Windowsの場合では、PowerShellまたはコマンドプロンプトで環境変数<code>LLVM_INSTALL_DIR</code>をClangのディレクトリに指定する。<br> <syntaxhighlight lang="ps1"> setx LLVM_INSTALL_DIR "C:\<Clangのインストールディレクトリ>\libclang" setx PATH "C:\<Clangのインストールディレクトリ>\libclang\bin;%PATH%" </syntaxhighlight> <br> Linuxの場合では、~/.profileファイル等に、環境変数<code>LLVM_INSTALL_DIR</code>をClangのディレクトリに指定する。<br> vi ~/.profile <br> <syntaxhighlight lang="ini"> # ~/.profileファイル export LLVM_INSTALL_DIR="/<Clangのインストールディレクトリ>/libclang" </syntaxhighlight> <br> ==== PySide6のインストール ==== <u>venv、あるいは、virtualenvで仮想環境を使用することを推奨する。</u><br> 直接、pipコマンド経由でPySide6をインストールしないほうがよい。<br> <br> Pythonの仮想環境を作成する。<br> python -m venv env # または python3 -m venv env <br> Pythonの仮想環境をアクティベートする。<br> # Windows env\Scripts\activate.bat # Linux, MacOS source env/bin/activate <br> QtのサーバやPyPiからpipコマンド経由でインストールできるようになっている。<br> pip install PySide6 <br><br> == PySide6のライセンス == PySide6はLGPL v3でライセンスされている。<br> そのため、商用利用が可能であり、PySide6を使用したアプリケーションをオープンソースにする必要はない。<br> <br> ただし、PySide6のソースコード自体に変更を加えた場合は、その変更部分を公開する必要がある。<br> また、アプリケーションを配布する場合は、LGPLライセンスのコピーを含める必要がある。<br> <br> なお、Qt (PySide6の基盤となっているフレームワーク) 自体には商用ライセンスも存在するが、PySide6はLGPLで提供されているため、LGPLの条件を満たせば商用利用も可能である。<br> <br><br> == Qt Widgetsアプリケーションの作成 == <syntaxhighlight lang="python"> import sys import random # PySide6モジュールは、サブモジュールとしてQt APIへのアクセスを提供する # QtCore、QtWidgets、QtGuiのサブモジュールをインポートする from PySide6 import QtCore, QtWidgets, QtGui # QWidgetクラスを継承する # 基本的なUI (QPushButton, QLabel) を含む class MyWidget(QtWidgets.QWidget): def __init__(self): super().__init__() self.hello = ["Hallo Welt", "Hei maailma", "Hola Mundo", "Привет мир"] self.button = QtWidgets.QPushButton("Click me!") self.text = QtWidgets.QLabel("Hello World", alignment=QtCore.Qt.AlignCenter) self.layout = QtWidgets.QVBoxLayout(self) self.layout.addWidget(self.text) self.layout.addWidget(self.button) self.button.clicked.connect(self.magic) // QPushButtonを押下する時、magicメソッドが呼び出される @QtCore.Slot() def magic(self): self.text.setText(random.choice(self.hello)) if __name__ == "__main__": app = QtWidgets.QApplication([]) widget = MyWidget() widget.resize(800, 600) widget.show() sys.exit(app.exec()) </syntaxhighlight> <br><br> == Qt QMLアプリケーションの作成 == QQmlApplicationEngineクラスをインスタンス化して、QMLファイルを読み込む。<br> <br> <syntaxhighlight lang="python"> import sys from PySide6.QtGui import QGuiApplication from PySide6.QtQml import QQmlApplicationEngine if __name__ == "__main__": app = QGuiApplication(sys.argv) engine = QQmlApplicationEngine() engine.addImportPath(sys.path[0]) engine.loadFromModule("Example", "Main") if not engine.rootObjects(): sys.exit(-1) exit_code = app.exec() del engine sys.exit(exit_code) </syntaxhighlight> <br> <syntaxhighlight lang="qml"> import QtQuick import QtQuick.Controls import QtQuick.Layouts Window { width: 300 height: 200 visible: true title: "Hello World" readonly property list<string> texts: ["Hallo Welt", "Hei maailma", "Hola Mundo", "Привет мир"] function setText() { var i = Math.round(Math.random() * 3) text.text = texts[i] } ColumnLayout { anchors.fill: parent Text { id: text text: "Hello World" Layout.alignment: Qt.AlignHCenter } Button { text: "Click me" Layout.alignment: Qt.AlignHCenter onClicked: setText() } } } </syntaxhighlight> <br> Qt WidgetsならびにQt QMLのサンプルコードの詳細を知りたい場合は、[https://doc.qt.io/qtforpython-6/examples/index.html Qtの公式ドキュメント]を参照すること。<br> <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:Python]][[カテゴリ:Qt]]
Qtその他 - PySide6
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse