内容について
今回はpython環境でメインウィンドウのデザインをQt Designerを使用して行い、Qt Designerで作成したファイルをpythonコード上から呼び出すところまでの手順を紹介します。
環境 Python = 3.8 Pyside2 = 5.13.2
1. Qt Designerの起動
Pyside2がインストールされているpython環境でコンソールを開き”designer”コマンドを実行してQt Designerを起動し、テンプレートから main windowを選択して”作成”ボタンで素の状態のウィンドウを生成。
$ desinger
2. アイテムの配置
ウィジェットボックスからPush ButtonとPlain Text Editをドラッグ&ドロップしてウィンドウ上に配置します
3. uiファイルの保存
ファイル(F) → 保存(S)とクリックするか、Ctrl+Sでuiファイルを保存します。この例ではファイル名はmainwindow.uiとします。
4. uiファイルからpyファイルを生成
コンソールで以下のコマンドを実行しuiファイルからpyファイルを生成
$ pyside2-uic -o ui_mainwindow.py mainwindow.ui
5. pythonコードへの組込み
uicで生成されたpyファイルをインポートし、下記のようなコードを実行するとウィンドウが表示されます。
import sys
from PySide2.QtWidgets import QApplication, QMainWindow
from ui_mainwindow import Ui_MainWindow
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
C++/Qtでもほとんど同じようなコードでuiファイルを利用します。
- QMainWindowクラスを継承したクラスを定義
- メンバ変数としてUi_MainWindowクラスインスタンスを生成
- setupUiを実行しdesignerで配置した状態を適用
- 適時マウスがクリックされた場合やキーボードが押された場合などのイベント処理をカスタムクラスで拡張していく
6. QApplicationについて
プログラムの最初にQApplicationのインスタンスを生成してウィンドウシステムを初期化。w.show()でウィンドウが表示状態にセットされた後exec_()関数を実行することでイベントループが開始されウィンドウが表示されます。イベントループが駆動することで画面の更新やキーボードイベントの処理が行えるようになります。その後ウィンドウが閉じられるとexec_()が終了し、アプリケーションが終了します。