je voudrais coder un gestionnaire de mdp avec python et à l'aide du module " tkinter". Voici mon code actuelle, en fait j'en ai 2 : le premier
# Création de la fenêtre
from tkinter import *
import tkinter
# fenêtre principale
fenetre = Tk()
fenetre.title("Gestionnaire de mdp")
fenetre.geometry("400x300")
fenetre.maxsize(2000, 1200)
fenetre.config(bg="#47c595")
texte1 = Label(fenetre, text="Gestionnaire de mot de passe")
texte1.pack()
cadre1 = Frame(fenetre)
cadre1.pack()
# Fenetre secondaire de création d'utilisateur
def action2():
utilisateur = Tk()
utilisateur.title("Création d'un nouvel utilisateur")
utilisateur.geometry("520x400")
entrée1 = Entry(utilisateur)
entrée2 = Entry(utilisateur)
saisie = Entry(utilisateur)
Label(utilisateur, text="Entrez votre prénom").grid(row=0, column=0)
entrée1.grid(row=1, column=0)
Label(utilisateur, text="Entrez votre nom").grid(row=2, column=0)
entrée2.grid(row=3, column=0)
Label(utilisateur, text="Entrez ici votre mot de passe").grid(row=4, column=0)
saisie.grid(row=5, column=0)
def getEntry():
res = entrée1.get(), entrée2.get(), saisie.get()
print("étape de récupération effectuee")
print(res)
first_name = res[0]
last_name = res[1]
password = res[2]
profiles [first_name + last_name] = password
Label(utilisateur, text = "Vos données ont été enregistrées").grid(row = 9, column=5)
boutonen = Button(utilisateur, text="Enregistrer", command=getEntry).grid(row=7, column=3)
bouton1 = Button(cadre1, text="Créer un nouvel utilisateur", command=action2)
def action():
connexion = Tk()
connexion.title("Se connecter à sa base de données")
connexion.geometry("400x400")
saisie1 = Entry(connexion)
Label(connexion, text="Entrez votre prénom").grid(row=1, column=0)
saisie1.grid(row=2, column=0)
saisie2 = Entry(connexion)
Label(connexion, text="Entrez votre nom").grid(row=1, column=1)
saisie2.grid(row=2, column=1)
mdp = Entry(connexion)
Label(connexion, text="Entrez ici votre mot de passse").grid(row=3, column=0)
mdp.grid(row=4, column=0)
def check_profile():
profiles = {"user1": {"first_name": "Gégé", "last_name": "Nom1", "password": "azerty"},
"user2": {"first_name": "prenom1", "last_name": "nom2", "password": "9876"}}
first_name, last_name, password = saisie1.get(), saisie2.get(),mdp.get()
for user, user_data in profiles.items():
if user_data["first_name"] == first_name and user_data["last_name"] == last_name and user_data["password"] == password:Label(connexion, text="Connexion réussie").grid(row = 5, column = 1)
break
else:
Label(connexion, text="Utilisateur ou mot de passe incorrect").grid(row=5, column=1)
connexion = Button(connexion, text="connexion", command=check_profile)
connexion.grid(row=6, column=1)
bouton2 = Button(cadre1, text="Se connecter à sa base de données", command=action)
bouton1.pack()
bouton2.pack()
from ctypes import windll
windll.shcore.SetProcessDpiAwareness(1)
0
# affichage de la fenêtre
fenetre.mainloop()
Et le second :
import hashlib
import tkinter
from tkinter import *
# fenêtre principale
fenetre = Tk()
fenetre.title("Gestionnaire de mdp")
fenetre.geometry("400x300")
fenetre.maxsize(2000, 1200)
fenetre.config(bg="#47c595")
texte1 = Label(fenetre, text="Gestionnaire de mot de passe")
texte1.pack()
cadre1 = Frame(fenetre)
cadre1.pack()
# Creating profiles dictionary
profiles = {}
# Fenetre secondaire de création d'utilisateur
def action2():
utilisateur = Tk()
utilisateur.title("Création d'un nouvel utilisateur")
utilisateur.geometry("520x400")
entrée1 = Entry(utilisateur)
entrée2 = Entry(utilisateur)
saisie = Entry(utilisateur)
Label(utilisateur, text="Entrez votre prénom").grid(row=0, column=0)
entrée1.grid(row=1, column=0)
Label(utilisateur, text="Entrez votre nom").grid(row=2, column=0)
entrée2.grid(row=3, column=0)
Label(utilisateur, text="Entrez ici votre mot de passe").grid(row=4, column=0)
saisie.grid(row=5, column=0)
def getEntry():
first_name = entrée1.get()
last_name = entrée2.get()
# Creating a new password using the first name and the last name
password = first_name + last_name
# Hashing the password using sha256
hashed_password = hashlib.sha256(password.encode()).hexdigest()
# Adding the profile to the dictionary
profiles[first_name + last_name] = hashed_password
print("Profile crée")
Label(utilisateur, text="Vos données ont été enregistrées").grid(
row=9, column=5)
bouton_save = Button(utilisateur, text="Enregistrer",
command=getEntry).grid(row=7, column=3)
bouton_create = Button(
cadre1, text="Créer un nouvel utilisateur", command=action2)
def action():
connexion = Tk()
connexion.title("Se connecter à sa base de données")
connexion.geometry("400x400")
saisie1 = Entry(connexion)
Label(connexion, text="Entrez votre prénom").grid(row=1, column=0)
saisie1.grid(row=2, column=0)
saisie2 = Entry(connexion)
Label(connexion, text="Entrez votre nom").grid(row=1, column=1)
saisie2.grid(row=2, column=1)
mdp = Entry(connexion)
Label(connexion, text="Entrez ici votre mot de passse").grid(row=3, column=0)
mdp.grid(row=4, column=0)
def connect():
first_name = saisie1.get()
last_name = saisie2.get()
password = mdp.get()
# Hashing the password using sha256
hashed_password = hashlib.sha256(password.encode()).hexdigest()
# Check if the profile exists in the dictionary
if (first_name + last_name) in profiles:
if profiles[first_name + last_name] == hashed_password:
print("Profile trouvé. Bonjour " + first_name + " " + last_name)
Label(connexion, text="Bonjour " + first_name +
" " + last_name).grid(row=5, column=0)
else:
print("mot de passe incorrect")
Label(connexion, text="mot de passe incorrect").grid(row=5, column=0)
else:
print("Profile not found")
Label(connexion, text="Profil non trouvé").grid(row=5, column=0)
bouton_connect = Button(connexion, text="Connexion", command=connect)
bouton_connect.grid(row=6, column=0)
bouton_connect = Button(
cadre1, text="Se connecter à sa base de données", command=action)
bouton_create.pack()
bouton_connect.pack()
Voilà mes 2 codes différents. Je voudrais savoir quel code est selon vous la meilleure base. Et aussi pourquoi sur le second code les 2 else ne marchent sous pretexte que " syntax incorrect" .
Pourriez vous m'éclairer un peu svp. Toute aide est la bienvenue. Merci de votre aide par avance.
EDIT MODERATION : Suppression des informations personnelles
jee pee
Messages postés40620Date d'inscriptionmercredi 2 mai 2007StatutModérateurDernière intervention 4 janvier 20259 474 Modifié le 26 janv. 2023 à 21:05
Bonjour,
Une remarque sur la forme de ton code. Soit c'est en publiant que la mise en forme a été modifiée, soit c'est ton source d'origine et alors tu as soucis dans la gestion de l'indentation du code, paramètre majeur en Python.
Une ligne qui se termine par : constitue un début de bloc, sur des instructions comme def, for, if ... les lignes qui suivent doivent avoir une indentation, et elles doivent être alignées. Le else doit être aligné sur le if dont il dépend.
def xxx():
if a==b:
if c==d:
print()
else:
print()
else:
print()
Salut, qu'entends-tu par gestionnaire de mdp ? Pour gérer tes propres mots de passe comme par exemple keepass*, ou autre chose ?
De toute façon en l'état aucun de tes scripts ne va, tu dois séparer ton gestionnaire de mots de passes du reste, il devrait être aussi bien utilisable en "mode texte" qu'avec une application graphique comme tkinter, Qt, etc.
De plus, il n'y a aucune persistance des données, comment comptes-tu faire ?
En ce qui concerne le code, il y a beaucoup d'incohérences, une fenêtre n'est pas un utilisateur, on n'utilise pas de caractères accentuées dans les identifiants de variables et on les nomme en fonction de ce qu'elles contiennent en éviant aussi le "frangliche", on n'utilise pas comme simple mot de passe le nom et prénom d'une personne... Car c'est ce qui importe ici, tout ce qui concerne tkinter, on s'en balance en fait.
Je te laisse réfléchir à l'utilité de la variable res.