我们这里创建的子窗口属于模式对话框,期间不可以操作父窗口,相关概念CSDN中很多。模式对话框的好处之一是可以影响父窗口。
创建新窗口
UI工具: Qt designer
注意点:模板使用 Dialog 开头的三者之一:
python代码:
子窗口:
from PySide2.QtGui import QIcon
from PySide2.QtUiTools import QUiLoader
from PySide2.QtWidgets import QApplication, QMessageBox, QDialog
class addPane1(QDialog):
def __init__(self):
super().__init__()
self.ui = QUiLoader().load('./ui/addBookPane.ui') # 动态加载UI文件
self.ui.setWindowIcon(QIcon('./images/trans.png')) # icon
self.ui.setWindowTitle('Circu') #$标题
self.ui.submit.clicked.connect(self.submit) # 信号
在代码中去定义各种事件, 但创建的类需要继承QDialog
父窗口:
设置某一按钮btn点击信号关联createNew()
self.ui.btn.clicked.connect(self.createNew)
def createNew(self):
self.newWindow = anatherPane.addPane1()
exitCode = self.newWindow.ui.exec() # 这里执行exec()而非show()方法
if exitCode:
pass
相较于show(), exec()可以返回exit code(无异常则返回 0 ), 根据返回值可以进一步操作父窗口相关内容。
为什么继承QDialog, 模式对话框等问题详见参考资料。