【发布时间】:2019-06-01 02:39:56
【问题描述】:
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 结束
感谢您的帮助
【问题讨论】:
-
什么是
window.show?如果它是一个方法的调用,那么你忘记了括号。 -
window.show 即使没有括号也能正常工作
-
@radham
window.show不做任何事情,删除它并观察相同的行为,如果你使用window.show(),你会得到另一个。 -
这看起来像是 pyside/pyside2 中的一个错误。 pyqt5 中的等效代码完全按预期工作。也就是说,关闭对话框不会同时关闭主窗口。该错误似乎在
QUiLoader中,因为使用普通的QMainWindow可以恢复预期的行为。