Qt for Python アプリケーションで Designer UI ファイルを使用する
フォームを Python コードに変換する
デモンストレーションとして、Qt Widgets アニメーションイージングの例を使用します。
アプリケーションは1つのソースファイルeasing.py
、UI ファイルform.ui
、リソースファイルeasing.qrc
、プロジェクトファイルeasing.pyproject
の YAML フォーマットで構成されます:
{ "files": ["easing.qrc", "ui_form.py", "easing.py", "easing_rc.py", "form.ui"] }
UI ファイルはUser Interface Compiler (uic) を使ってフォームを構築する Python コードに変換されます:
uic -g python form.ui > ui_form.py
トップレベルのウィジェットはForm
という名前なので、Ui_Form
という Python クラスが生成されます。このクラスは、ウィジェットをパラメータとする関数setupUi()
を提供し、UI 要素を作成するために呼び出されます:
from ui_form import Ui_Form ... class Window(QtWidgets.QWidget): def __init__(self, parent=None): super(Window, self).__init__(parent) self.m_ui = Ui_Form() self.m_ui.setupUi(self)
後で、ウィジェットはUi_Form
クラス経由でアクセスできる:
self.m_ui.graphicsView.setScene(self.m_scene)
setupUi()
以外に、Ui_Form
は、retranslateUi()
メソッドを提供する。これは、QEvent.LanguageChangeタイプのQEvent に反応して呼び出され、アプリケーション言語の変更を示す。
UiToolsのアプローチ
QUiLoader 、実行時にユーザー・インターフェースを構築するフォーム・ローダー・オブジェクトを提供する。このユーザー・インターフェースは、任意のQIODevice 、例えばQFile オブジェクトから取得することができる。QUiLoader::load ()関数は、ファイルに含まれるユーザー・インターフェース記述を使用してフォーム・ウィジェットを構築します。
これは uiloader の例で示されています:
from PySide2.QtUiTools import QUiLoader if __name__ == '__main__': # Some code to obtain the form file name, ui_file_name app = QApplication(sys.argv) ui_file = QFile(ui_file_name) if not ui_file.open(QIODevice.ReadOnly): print("Cannot open {}: {}".format(ui_file_name, ui_file.errorString())) sys.exit(-1) loader = QUiLoader() widget = loader.load(ui_file, None) ui_file.close() if not widget: print(loader.errorString()) sys.exit(-1) widget.show() sys.exit(app.exec_())
リソースのインポート
単一ディレクトリでの使用
リソースファイルからアイコンを使用する場合、例えばresources.qrc
、uic
はフォームのインポートを生成します:
import resources_rc
これは、Resource Compiler (rcc)ツールを呼び出して生成されたファイルresources_rc.py
(-g python
コマンドラインオプションを渡す) が、フォームソースと同じディレクトリに存在することを前提としています。
uic
コマンドラインオプション を指定すると、 インジケータが付加されます:--rc-prefix
rc
import rc_resources
コマンドラインオプション--from-imports
を指定すると、インポートが '.' からの相対パスで生成されます:
from . import resources_rc
ディレクトリツリー
プロジェクトによっては、より複雑なディレクトリツリーを持つものもあります:
project resources (resources.qrc) ui (.ui files)
その場合、リソース・ファイルはフォーム・ソースと同じディレクトリにはなく、.ui
ファイルは通常リソース・ファイルへの相対パスを持ちます:
<include location="../resources/resources.qrc"/>
この場合、コマンドラインオプション--absolute-imports
を使用すると、Pythonで絶対インポートを生成することができます:
import resources.resources_rc
この場合、コマンドラインオプション.
を使用すると、Pythonの絶対インポートを生成することができます。
より深くネストしたツリーの場合、コマンドラインオプション--python-paths <path list>
を使って Python のインポートパスリストを渡すことができます。uic
は、フォームファイルのパスとパスの構成要素を照合して、プロジェクトのルートを決定しようとします。
--python-paths
が指定されない場合、環境変数PYTHONPATH
がデフォルトでチェックされます。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.