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

# 実行サンプル
pushButtonを押すと、ダイアログが起動する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423803/0c0b28e2-ce23-91a9-1ae4-6ea832d01446.png)


# 実行環境
windows10
python3.9.5
Qt5.1.5 (QtDesigner6.0.2コミュニティ)

pythonモジュール：pySide6（pipでインストールしておく）

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

# ソースコード作成手順
参考

https://qiita.com/taiko1/items/c19d75ba09d60ae5f5a6#4%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E4%BD%9C%E6%88%90%E6%89%8B%E9%A0%86

■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() # サブウィンドウの作成 & 表示

# ソースコード
https://github.com/sakurataiko1/Python_GUI_pySide/tree/main/pySide6_childWindow

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

<B> mainwindow.py </B>
```
# 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_())

```


<B>SubDialog1.py</B>
```
# 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

https://stackoverflow.com/questions/38611296/child-dialog-doesnt-show-up-in-pyqt5