'close QDialog and back to the first QDialog

I just started learning Python and PyQt5, and I have this problem, I create two QDialog, the first one have a button to open the second, and in the second I have a formular with button "valider", I want when the information are set and the button clicked information goes to database (not the problem) and the QDialog be closed and back to the first one. The two QDialogs are in different files .py .

This is the error I get:

NameError: name 'Dialog2' is not defined

First QDialog:

from PyQt5 import QtCore, QtWidgets 
from diag_2affiche import Ui_Dialog_2
from diag_3affiche import Ui_Dialog_3
import sqlite3

conn = sqlite3.connect(r"C:\Users\CM\Documents\base_test.db")


class Ui_Dialog_1(object):
    def ouvrefenetre(self):
        self.Dialog_2 = QtWidgets.QDialog()
        self.ui = Ui_Dialog_2()
        self.ui.setupUi(self.Dialog_2)
        self.Dialog_2.exec()

    def ouvrefenetre2(self):
        self.window = QtWidgets.QDialog()
        self.ui = Ui_Dialog_3()
        self.ui.setupUi(self.window)
        self.window.open()

    def setupUi(self, Dialog_1):
        Dialog_1.setObjectName("Dialog_1")
        Dialog_1.resize(400, 300)
        
        self.inscription = QtWidgets.QPushButton(Dialog_1)
        self.inscription.setGeometry(QtCore.QRect(10, 10, 160, 30))
        self.inscription.setObjectName("pushButton")

        self.niveau = QtWidgets.QPushButton(Dialog_1)
        self.niveau.setGeometry(QtCore.QRect(10, 50, 160, 30))
        self.niveau.setObjectName("pushButton")

        self.retranslateUi(Dialog_1)
        QtCore.QMetaObject.connectSlotsByName(Dialog_1)

        self.inscription.clicked.connect(self.ouvrefenetre)
        self.niveau.clicked.connect(self.ouvrefenetre2)
  
    def retranslateUi(self, Dialog_1):
        _translate = QtCore.QCoreApplication.translate
        Dialog_1.setWindowTitle(_translate("Dialog_1", "Dialog"))
        self.inscription.setText(_translate("Dialog_1", "INSCRIPTION"))
        self.niveau.setText(_translate("Dialog_1", "NIVEAUX"))
        
    
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog_1()
    ui.setupUi(Dialog)
    Dialog.show()

    sys.exit(app.exec_())

Second QDialog:

from PyQt5 import QtCore, QtWidgets
import sqlite3


class Ui_Dialog_2(object):
    
    def valider_info(self):
        
        if self.nomeleve.text() and self.prenomeleve.text():
            issm = self.nomeleve.text()
            lakab = self.prenomeleve.text()
            tarikh = self.date_naissance.text()
            winzed = self.lieu_naissance.text()
            ladriss = self.adresse.text()
            
            conn = sqlite3.connect(r"C:\Users\CM\Documents\base_test.db")
            c = conn.cursor()
            dico = {"a": issm , "b": lakab , "c": tarikh , "d": winzed , "e": ladriss}
            c.execute("INSERT INTO Eleve VALUES (:a ,:b ,:c ,:d ,:e)", dico)

            conn.commit()

            conn.close()
            Dialog2.done()                              
        else:
            Dialog2.show()
            
            
    def setupUi(self, Dialog_2):
        Dialog_2.setObjectName("Dialog_2")
        Dialog_2.resize(370, 220)
        
        self.label = QtWidgets.QLabel(Dialog_2)
        self.label.setGeometry(QtCore.QRect(30, 10, 160, 30))
        self.label.setObjectName("labnom")

        self.nomeleve = QtWidgets.QLineEdit(Dialog_2)
        self.nomeleve.setGeometry(QtCore.QRect(150, 15, 200, 20))
        self.nomeleve.setObjectName("nom_de_l'eleve")

        self.label_2 = QtWidgets.QLabel(Dialog_2)
        self.label_2.setGeometry(QtCore.QRect(30, 40, 160, 30))
        self.label_2.setObjectName("labprenom")

        self.prenomeleve = QtWidgets.QLineEdit(Dialog_2)
        self.prenomeleve.setGeometry(QtCore.QRect(150, 45, 200, 20))
        self.prenomeleve.setObjectName("prenom_de_l'eleve")

        self.label_3 = QtWidgets.QLabel(Dialog_2)
        self.label_3.setGeometry(QtCore.QRect(30, 70, 160, 30))
        self.label_3.setObjectName("labdate")

        self.date_naissance = QtWidgets.QLineEdit(Dialog_2)
        self.date_naissance.setGeometry(QtCore.QRect(150, 75, 200, 20))
        self.date_naissance.setObjectName("date_de_naissance")

        self.label_4 = QtWidgets.QLabel(Dialog_2)
        self.label_4.setGeometry(QtCore.QRect(30, 100, 160, 30))
        self.label_4.setObjectName("lablieu")

        self.lieu_naissance = QtWidgets.QLineEdit(Dialog_2)
        self.lieu_naissance.setGeometry(QtCore.QRect(150, 105, 200, 20))
        self.lieu_naissance.setObjectName("lieu_de_naissance")

        self.label_5 = QtWidgets.QLabel(Dialog_2)
        self.label_5.setGeometry(QtCore.QRect(30, 130, 160, 30))
        self.label_5.setObjectName("adresse")

        self.adresse = QtWidgets.QLineEdit(Dialog_2)
        self.adresse.setGeometry(QtCore.QRect(150, 135, 200, 20))
        self.adresse.setObjectName("adresse")

        self.valider = QtWidgets.QPushButton(Dialog_2)
        self.valider.setGeometry(QtCore.QRect(270, 180, 80, 25))
        self.valider.setObjectName("valider")

        self.annuler = QtWidgets.QPushButton(Dialog_2)
        self.annuler.setGeometry(QtCore.QRect(20, 180, 80, 25))
        self.annuler.setObjectName("annuler")


# LES ACTIONS--------------------------------------
        self.annuler.clicked.connect(Dialog_2.close)
        self.valider.clicked.connect(self.valider_info)

        self.retranslateUi(Dialog_2)
        QtCore.QMetaObject.connectSlotsByName(Dialog_2)
        

    def retranslateUi(self, Dialog_2):
        _translate = QtCore.QCoreApplication.translate
        Dialog_2.setWindowTitle(_translate("Dialog_2", "Formulaire d'inscription"))
        self.label.setText(_translate("Dialog_2", "NOM"))
        self.label_2.setText(_translate("Dialog_2", "PRENOM"))
        self.label_3.setText(_translate("Dialog_2", "DATE DE NAISSANCE"))
        self.label_4.setText(_translate("Dialog_2", "LIEU DE NAISSANCE"))
        self.label_5.setText(_translate("Dialog_2", "ADRESSE"))
        self.valider.setText(_translate("Dialog_2", "VALIDER"))
        self.annuler.setText(_translate("Dialog_2", "ANNULER"))

if __name__ == "__main__":
    import sys
    app2 = QtWidgets.QApplication(sys.argv)
    Dialog2 = QtWidgets.QDialog()
    #ui = Ui_Dialog_2()
    #ui.setupUi(Dialog2)
    #Dialog2.show()
    sys.exit(app2.exec_())


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source