LoginSignup
1
3

More than 1 year has passed since last update.

python GUI入門  QtDesigner + pySide 子ウィンドウ表示

Last updated at Posted at 2022-08-12

実行サンプル

pushButtonを押すと、ダイアログが起動する
image.png

実行環境

windows10
python3.9.5
Qt5.1.5 (QtDesigner6.0.2コミュニティ)

pythonモジュール:pySide6(pipでインストールしておく)

実行手順

ソースコードを作成する
windowsコマンドプロンプトでプログラム作成したフォルダに移動し、下記実行する

python mainwindow.py 

ソースコード作成手順

参考

■Qt DesignerでPySide6 子ウィンドウの作り方
2ファイル作成する
GUI画面用:form_SubDialog1.ui (PySide6-uicコマンド後は SubDialog1.py)
動作プログラム用: SubDialog1.py

[1] form_SubDialog1.ui 新規ファイル作成 QtCreator プロジェクト名 右クリック → [add New] -[Qt] -[Qt Designers form]
Widgetで追加

[2] SubDialog1.pyファイル 新規作成

[3] form_SubDialog1.ui ★編集 widgetのオブジェクト名を 
SubDialog1 に変更する (デフォルト値では form とかになっている)

[4] mainwindow.py 下記記述入れる subDialogの認識のため

from Ui_SubDialog1 import Ui_SubDialog1
from SubDialog1 import SubDialog1

[5] mainwindow.py 下記記述入れる subDialogの起動のため
・コンストラクト下 (def init(self):) に
  self.popup_dlg = None

・プッシュボタン動作コード下(def func_on_pushButton_1_clicked(self):)
self.popup_dlg = SubDialog1() # サブウィンドウの作成 & 表示

ソースコード

下記で構成される。
form.ui
form_SubDialog1.ui
mainwindow.py
pySide6_childWindow.pyproject
SubDialog1.py
Ui_MainWindow.py
Ui_SubDialog1.py

mainwindow.py

# This Python file uses the following encoding: utf-8
import os
from pathlib import Path
import sys

#from PySide2.QtWidgets import QApplication, QWidget
#from PySide2.QtCore import QFile
#from PySide2.QtUiTools import QUiLoader

from PySide6 import *
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *

from Ui_MainWindow import Ui_MainWindow

# -start- childWIndow
from Ui_SubDialog1 import Ui_SubDialog1
from SubDialog1 import SubDialog1
# -end- childWIndow


class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setupUi(self)
        # -start- add myk
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.popup_dlg = None

        # フォームと動作の関連付け
        self.ui.pushButton_1.clicked.connect(self.func_on_pushButton_1_clicked)

    def func_on_pushButton_1_clicked(self):
        self.popup_dlg = SubDialog1() # サブウィンドウの作成 & 表示


if __name__ == "__main__":
    app = QApplication([])
    widget = MainWindow()
    widget.show()
    sys.exit(app.exec_())

SubDialog1.py

# This Python file uses the following encoding: utf-8

# if __name__ == "__main__":
#     pass
# This Python file uses the following encoding: utf-8
import os
from pathlib import Path
import sys

# from PySide6.QtWidgets import QApplication, QMainWindow
# from PySide6.QtCore import QFile
# from PySide6.QtUiTools import QUiLoader

from PySide6 import *
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *


from Ui_SubDialog1 import Ui_SubDialog1

class SubDialog1(QDialog, Ui_SubDialog1):
    def __init__(self):
        #super().__init__()
        super(SubDialog1, self).__init__()
        self.ui = Ui_SubDialog1()
        self.ui.setupUi(self)

        self.init_ui()

    def init_ui(self):
        self.resize(200, 100)
        self.show()

関連資料

参考:
https://qiita.com/donkonishi/items/860007d01aa81d14f0d6

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3