import sys
from PySide2.QtCore import QFile
from PySide2.QtWidgets import QApplication, QMainWindow
from PySide2.QtUiTools import QUiLoader
class MyMainWindow(QMainWindow):
def __init__(self):
super().__init__()
loader = QUiLoader()
self.ui = loader.load("mainWindow.ui", self)
self.ui.pushButton_call_dialog.clicked.connect(self.call_dialog)
self.ui.close()
self.ui.show()
def call_dialog(self):
loader = QUiLoader()
self.dialog = loader.load("dialog.ui")
self.dialog.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyMainWindow()
window.show
sys.exit(app.exec_())
大家好, 知道为什么第二个(对话框)窗口关闭整个应用程序吗? 当然,这不是崩溃,因为我收到一条消息:
进程已完成,退出代码为 0
感谢您的帮助
您可以在单独的类上处理 QDialog,然后使它们仅进行交互,结构可能会稍微改变,但您可以看看这是否是一个可行的答案:
import sys
from PySide2.QtWidgets import *
class MyWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
button = QPushButton("Dialog")
button.clicked.connect(self.open_dialog)
self.setCentralWidget(button)
def open_dialog(self):
dialog = MyDialog()
dialog.show()
dialog.exec_()
class MyDialog(QDialog):
def __init__(self):
QDialog.__init__(self)
button = QPushButton("Close")
button.clicked.connect(self.close_dialog)
layout = QHBoxLayout()
layout.addWidget(button)
self.setLayout(layout)
def close_dialog(self):
self.close()
if __name__ == "__main__":
app = QApplication()
m = MyWindow()
m.show()
sys.exit(app.exec_())
请注意,您应该在每个课程中包含
setUp
步骤。
希望有帮助。
将对话框放入单独的类中都不起作用。 每次调用 Dialog.close() 事件时,都会关闭整个应用程序。
对我有用的是使用 hide() 代替
这篇文章似乎很旧了。除了 hide() 的解决方法之外,还有其他解决方案或修复吗? 此致, 卡斯滕