Bonjour à tous,

Je fais appel à votre aide car j'ai un blocage...

Je suis en train de programmer une sorte de LMS où le but est que l'utilisateur saisisse des écritures comptables et soient évalués sur la saisie de celles-ci (ça reste booléen, soit l'écriture est complément correcte et attribue +1 points, soit l'écriture est fausse).
J'ai donc choisi la librairie PyQt5 pour faire le menu d'accueil où il peut s'enregistrer (les données sont conservées dans une table SQLite) et s'authentifier (les mêmes données enregistrées lors de l'authentification sont interrogées), jusque là pas de problèmes.

Ensuite j'ai créée une classe et un attribut relatif à l'écran de l'exercice (créée à l'aide de QtDesigner), c'est à dire la fenêtre de l'énoncé de l'exercice, les widgets ainsi que le tableau où devront être saisies les écritures en faisant appel au bons comptes et entrer les bons montants au débit ou au crédit.

Là où je bloque c'est pour faire apparaitre cet écran à la suite de l'authentification réussie. Je souhaiterai qu'une fois que l'identifiant et le mot de passe saisies soient corrects, apparaisse, sans créer une fenêtre supplémentaire, l'écran relatif à l'exercice.

Je vous met le code ci-dessous et les copies d'écrans des screens qui sont appelés au cours de l'exécution du programme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import sys
from PyQt5.uic import loadUi
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QDialog, QApplication, QWidget 
import sqlite3
 
class WelcomeScreen(QDialog):
	def __init__(self):
		super(WelcomeScreen, self).__init__()
		loadUi("welcomescreen.ui", self)
		self.login.clicked.connect(self.gotologin)
		self.create.clicked.connect(self.gotocreate)
 
	def gotologin(self):
		login = LoginScreen()
		widget.addWidget(login)
		widget.setCurrentIndex(widget.currentIndex()+1)
 
	def gotocreate(self):
		create = CreateAccScreen()
		widget.addWidget(create)
		widget.setCurrentIndex(widget.currentIndex() + 1)
 
class LoginScreen(QDialog):
	def __init__(self):
		super(LoginScreen, self).__init__()
		loadUi("login.ui", self)
		self.passwordfield.setEchoMode(QtWidgets.QLineEdit.Password)
		self.login.clicked.connect(self.loginfunction)
 
	def loginfunction(self):
		user = self.usernamefield.text()
		password = self.passwordfield.text()
		bookkeeping = BookKeepingScreen()
 
	def gotobookkeeping(self):
		BookKeepingScreen = BookKeepingScreen()
		widget.addWidget(BookKeepingScreen)
		widget.setCurrentIndex(widget.currentIndex() + 1)
 
		if len(user)==0 or len(password)==0:
			self.error.setText("Veuillez remplir tous les champs")
		else : 
			conn = sqlite3.connect("logindata.db")
			cur = conn.cursor()
			query = 'SELECT password FROM login_info WHERE username =\''+user+"\'"
			cur.execute(query)
			result_pass = cur.fetchone()[0]
			if result_pass == password:
				print("Authentification réussie !")
				self.error.setText("")
				self.bookkeeping.connect(self.gotobookkeeping)
 
			else :
				self.error.setText("nom d'utilisateur ou mot de passe invalide...")
 
class BookKeepingScreen(QDialog):
	def __init__(self):
		super(BookKeepingScreen, self).__init__()
		loadUi("bookkeeping.ui", self)
 
	def BookKeepingfunction(self):
		def loginfunction(self):
			compte = self.case_compte_1.text()
			libelle = self.case_libelle_1.text()
			debit = self.case_debit_1.text()
			credit = self.case_credit_1.text()
 
		if len(compte)==401:
			self.error.setText("Ce n'est pas le bon compte")
 
		else : 
			conn = sqlite3.connect("logindata.db")
			cur = conn.cursor()
			query = 'SELECT libelle FROM pcg WHERE compte = "401"'
			cur.execute(query)
			result_validation = cur.fetchone()[0]
			if result_validation == compte:
				print("+1")
				conn = sqlite3.connect("logindata.db")
				cur = conn.cursor()
 
				user_info = [user, info, level]
				cur.execute('INSERT INTO login_info (username, password, level) VALUES (+1)', user_info)
 
				conn.commit()
				conn.close() 
 
class CreateAccScreen(QDialog):
	def __init__(self):
		super(CreateAccScreen, self).__init__()
		loadUi("createacc.ui", self)
		self.passwordfield.setEchoMode(QtWidgets.QLineEdit.Password)
		self.confirmpasswordfield.setEchoMode(QtWidgets.QLineEdit.Password)
		self.senregistrerButton.clicked.connect(self.senregistrerButtonfunction)
 
	def senregistrerButtonfunction(self):
		user = self.usernamefield.text()
		password = self.passwordfield.text()
		confirmpassword = self.confirmpasswordfield.text()
 
		if len(user)==0 or len(password)==0 or len(confirmpassword)==0:
			self.error.setText("Veuillez remplir tous les champs")
 
		elif password!=confirmpassword:
			self.error.setText("Les mots de passes ne correspondent pas")
		else : 
			conn = sqlite3.connect("logindata.db")
			cur = conn.cursor()
 
			user_info = [user, password]
			cur.execute('INSERT INTO login_info (username, password) VALUES (?,?)', user_info)
 
			conn.commit()
			conn.close() 
 
app = QApplication(sys.argv)
welcome = WelcomeScreen()
widget = QtWidgets.QStackedWidget()
widget.addWidget(welcome)
widget.setFixedHeight(800)
widget.setFixedHeight(1200)
widget.show()
try:
	sys.exit(app.exec_())
except:
	print("Exiting")
Nom : 1.PNG
Affichages : 329
Taille : 23,5 KoNom : 2.PNG
Affichages : 333
Taille : 30,8 KoNom : 3.PNG
Affichages : 325
Taille : 24,4 KoNom : 4.PNG
Affichages : 332
Taille : 23,0 Ko

Je pense qu'il y a quelque chose que je fais mal mais j'ai beau relire les cours que j'ai sur PyQt, je n'y arrive pas. Je vous remercie pour votre aide et vos explications