Hi, guys! I have a MainWindow with a subwindow inside an mdiArea. The subwindow opens, but if I close it and try to reopen it, my app crashes. What am I doing wrong? Here's my code:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setWindowModality(QtCore.Qt.WindowModal)
MainWindow.resize(781, 478)
self.mdiArea = QtWidgets.QMdiArea()
self.mdiArea.setGeometry(0, 0, 600, 400)
self.mdiArea.setAutoFillBackground(True)
self.mdiArea.setObjectName("mdiArea")
self.subWindowUsers = QtWidgets.QWidget()
self.subWindowUsers.setMinimumSize(QtCore.QSize(466, 267))
self.subWindowUsers.setObjectName("subWindowUsers")
self.pushButton_save_2 = QtWidgets.QPushButton(self.subWindowUsers)
self.pushButton_save_2.setGeometry(QtCore.QRect(330, 220, 75, 23))
self.pushButton_save_2.setObjectName("pushButton_save_2")
self.pushButton_previous = QtWidgets.QPushButton(self.subWindowUsers)
self.pushButton_previous.setGeometry(QtCore.QRect(150, 190, 75, 23))
self.pushButton_previous.setObjectName("pushButton_previous")
self.lineEdit_date = QtWidgets.QLineEdit(self.subWindowUsers)
self.lineEdit_date.setGeometry(QtCore.QRect(110, 50, 91, 20))
self.lineEdit_date.setObjectName("lineEdit_date")
self.pushButton_edit = QtWidgets.QPushButton(self.subWindowUsers)
self.pushButton_edit.setGeometry(QtCore.QRect(150, 220, 75, 23))
self.pushButton_edit.setObjectName("pushButton_edit")
self.pushButton_update = QtWidgets.QPushButton(self.subWindowUsers)
self.pushButton_update.setGeometry(QtCore.QRect(240, 220, 75, 23))
self.pushButton_update.setObjectName("pushButton_update")
self.pushButton_next = QtWidgets.QPushButton(self.subWindowUsers)
self.pushButton_next.setGeometry(QtCore.QRect(240, 190, 75, 23))
self.pushButton_next.setObjectName("pushButton_next")
self.pushButton_first = QtWidgets.QPushButton(self.subWindowUsers)
self.pushButton_first.setGeometry(QtCore.QRect(60, 190, 75, 23))
self.pushButton_first.setObjectName("pushButton_first")
self.pushButton_last = QtWidgets.QPushButton(self.subWindowUsers)
self.pushButton_last.setGeometry(QtCore.QRect(330, 190, 75, 23))
self.pushButton_last.setObjectName("pushButton_last")
self.pushButton_add = QtWidgets.QPushButton(self.subWindowUsers)
self.pushButton_add.setGeometry(QtCore.QRect(60, 220, 75, 23))
self.pushButton_add.setObjectName("pushButton_add")
self.pushButton_cancel = QtWidgets.QPushButton(self.subWindowUsers)
self.pushButton_cancel.setGeometry(QtCore.QRect(240, 220, 75, 23))
self.pushButton_cancel.setObjectName("pushButton_cancel")
self.lineEdit_login = QtWidgets.QLineEdit(self.subWindowUsers)
self.lineEdit_login.setGeometry(QtCore.QRect(110, 110, 171, 20))
self.lineEdit_login.setObjectName("lineEdit_login")
self.lineEdit_name = QtWidgets.QLineEdit(self.subWindowUsers)
self.lineEdit_name.setGeometry(QtCore.QRect(110, 80, 271, 20))
self.lineEdit_name.setObjectName("lineEdit_name")
self.pushButton_save = QtWidgets.QPushButton(self.subWindowUsers)
self.pushButton_save.setGeometry(QtCore.QRect(330, 220, 75, 23))
self.pushButton_save.setObjectName("pushButton_save")
self.lineEdit_number = QtWidgets.QLineEdit(self.subWindowUsers)
self.lineEdit_number.setGeometry(QtCore.QRect(110, 20, 61, 20))
self.lineEdit_number.setObjectName("lineEdit_number")
self.lineEdit_pwd = QtWidgets.QLineEdit(self.subWindowUsers)
self.lineEdit_pwd.setGeometry(QtCore.QRect(110, 140, 113, 20))
self.lineEdit_pwd.setObjectName("lineEdit_pwd")
MainWindow.setCentralWidget(self.mdiArea)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 781, 21))
self.menubar.setObjectName("menubar")
self.menuUsers = QtWidgets.QMenu(self.menubar)
self.menuUsers.setObjectName("menuUsers")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.actionFile_users = QtWidgets.QAction(MainWindow)
self.actionFile_users.setObjectName("actionFile_users")
self.menuUsers.addAction(self.actionFile_users)
self.menubar.addAction(self.menuUsers.menuAction())
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
self.actionFile_users.triggered.connect(lambda: self.OpenUserForm("Users"))
self.pushButton_cancel.hide()
self.pushButton_save.hide()
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "My App"))
self.subWindowUsers.setWindowTitle(_translate("MainWindow", "Subwindow"))
self.pushButton_save_2.setText(_translate("MainWindow", "Delete"))
self.pushButton_previous.setText(_translate("MainWindow", "< Previous"))
self.pushButton_edit.setText(_translate("MainWindow", "Edit"))
self.pushButton_update.setText(_translate("MainWindow", "Update"))
self.pushButton_next.setText(_translate("MainWindow", "Next >"))
self.pushButton_first.setText(_translate("MainWindow", "<< First"))
self.pushButton_last.setText(_translate("MainWindow", "Last >>"))
self.pushButton_add.setText(_translate("MainWindow", "New user"))
self.pushButton_cancel.setText(_translate("MainWindow", "Cancel"))
self.pushButton_save.setText(_translate("MainWindow", "Save"))
self.menuUsers.setTitle(_translate("MainWindow", "Files"))
self.actionFile_users.setText(_translate("MainWindow", "Users"))
def OpenUserForm(self, text):
self.mdiArea.addSubWindow(ui.subWindowUsers)
ui.subWindowUsers.setWindowTitle(text)
ui.subWindowUsers.show()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())Thanks a lot for your time and help. I appreciate it! Best regards,
