'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 |
---|