Qt for Python アプリケーションでのQt Widgets Designer UIファイルの使用
フォームをPythonコードに変換する
説明のために、Qt Widgets のアニメーションイージングの例を使用します。
このアプリケーションは、1つのソースファイル `easing.py`、UIファイル `form.ui `、およびTOML形式のプロジェクトファイル `pyproject.toml` で構成されています。
[project]
name = "Easing Example"
[tool.pyside6-project]
files = ["easing.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 にはもう 1 つのメソッドretranslateUi() が用意されており、これはQEvent.LanguageChange 型のQEvent に対して反応して呼び出すことができます。このイベントは、アプリケーションの言語が変更されたことを示します。
UiToolsのアプローチ
QUiLoader クラスは、実行時にユーザーインターフェースを構築するためのフォームローダーオブジェクトを提供します。このユーザーインターフェースは、任意のQIODevice (例:QFile オブジェクト)から取得できます。QUiLoader::load()関数は、ファイルに含まれるユーザーインターフェースの記述を使用してフォームウィジェットを構築します。
その動作は、uiloader の例で示されています:
from PySide6.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.OpenModeFlag.ReadOnly):
print(f"Cannot open {ui_file_name}: {ui_file.errorString()}")
sys.exit(-1)
loader = QUiLoader()
widget = loader.load(ui_file, None)
ui_file.close()
if widget is None:
print(loader.errorString())
sys.exit(-1)
widget.show()
sys.exit(app.exec())リソースのインポート
単一ディレクトリでの使用
リソースファイル(例:resources.qrc )のアイコンを使用する場合、uic は次のような形式のインポートを生成します:
import resources_rcこれは、Resource Compiler (rcc)ツール(-g python コマンドラインオプションを指定して)を呼び出して生成されたファイルresources_rc.py が、フォームのソースと同じディレクトリに存在することを前提としています。
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 がチェックされます。
© 2026 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.