実行サンプル
実行環境
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