From cb1aeb61835aae8d7dcb07b4da492f4898af5d08 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Fri, 19 Nov 2021 00:47:01 +0100 Subject: [PATCH] Adding the Frame modularity --- main.py | 56 +++++++++++++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/main.py b/main.py index ec21c67..538eb17 100644 --- a/main.py +++ b/main.py @@ -20,35 +20,49 @@ class GesMag: print("Lancement de l'interface de gestion d'une caisse d'un magasin...") self.font = ("Comfortaa", 14) # Police par défaut Utilisateurs().creationTable() # On créer la base de donnée si elle n'existe pas déjà - self._login() + self.parent = Tk() # On créer notre fenêtre principale + + self._interfaceConnexion() # On créer la variable `self.f` qui est la frame a affiché + self.f.grid() # On affiche la frame + + self.parent.mainloop() # On affiche la fenêtre def connexion(self, utilisateur: str, motDePasse: str): + """Gère la connexion aux différentes interfaces de l'application.""" + # Vérification nom d'utilisateur / mot de passe correctement entré if len(utilisateur) == 0 or len(motDePasse) == 0 or len(motDePasse) < 8: messagebox.showerror("Erreur", "Utilisateur ou mot de passe incorrect.") return + + # Redirection vers la bonne interface if Utilisateurs().verificationIdentifiants(utilisateur, motDePasse): print("Bienvenue mon pote") else: print(f"Bah nan frérot c'est pas bon, ça c'est la liste des utilisateurs : {Utilisateurs().listUtilisateurs()}") - def _login(self): + def _interfaceConnexion(self): """Affiche la fenêtre de connexion.""" - global mdpVisible # Paramètres de la fenêtre - fenetre = Tk() - taille = (400, 600) - dimensionsFenetre(fenetre, taille) - fenetre.title("Fenêtre de connexion") + dimensionsFenetre(self.parent, (400, 600)) + self.parent.title("Fenêtre de connexion") + + # Instanciation de la Frame, on va donc ajouter tout nos widgets à cet Frame + self.f = Frame(self.parent) # Affichage des labels et boutons - send = lambda _ = None: self.connexion(utilisateur.get(), motDpasse.get()) # lambda pour envoyer les informations entrés dans le formulaire - ecart = 80 # Ecart pour avoir un affichage centré (taille[0] / 4 - 20 = 80) - Label().grid(row=0, pady=50) # utilisé pour du padding (meilleur affichage) + tentativeDeConnexion = lambda _ = None: self.connexion(utilisateur.get(), motDpasse.get()) # lambda pour envoyer les informations entrés dans le formulaire + ecart = 80 # Ecart pour avoir un affichage centré + Label(self.f).grid(row=0, pady=50) # utilisé pour du padding (meilleur affichage) - Label(text="Utilisateur", font=self.font).grid(column=0, row=1, columnspan=2, padx=ecart - 20, pady=20, sticky=W) - utilisateur = Entry(font=self.font, width=18) + Label(self.f, text="Utilisateur", font=self.font).grid(column=0, row=1, columnspan=2, padx=ecart - 20, pady=20, sticky=W) + utilisateur = Entry(self.f, font=self.font, width=18) utilisateur.grid(column=1, row=2, columnspan=2, padx=ecart) + Label(self.f, text="Mot de passe", font=self.font).grid(column=0, row=3, columnspan=2, padx=ecart - 20, pady=20, sticky=W) + motDpasse = Entry(self.f, font=self.font, show='⁎', width=18) + motDpasse.grid(column=1, row=4, columnspan=2, padx=ecart) + motDpasse.bind("", tentativeDeConnexion) + def __afficherMDP(self): """Permet de gérer l'affichage du mot de passe dans le champs sur la page de connexion.""" if self.mdpVisible == False: # si mot de passe caché, alors on l'affiche @@ -61,25 +75,17 @@ class GesMag: motDpasse.config(show='⁎') bouttonAffichageMDP.config(font=("Arial", 10)) - Label(text="Mot de passe", font=self.font).grid(column=0, row=3, columnspan=2, padx=ecart - 20, pady=20, sticky=W) - motDpasse = Entry(font=self.font, show='⁎', width=18) - motDpasse.grid(column=1, row=4, columnspan=2, padx=ecart) - motDpasse.bind("", send) - - bouttonAffichageMDP = Button(text="👁", command=lambda: __afficherMDP(self)) + bouttonAffichageMDP = Button(self.f, text='👁', command=lambda: __afficherMDP(self)) bouttonAffichageMDP.grid(column=2, row=4, columnspan=2) self.mdpVisible = False - bouton = Button(text="Se connecter", font=self.font, command=send) + bouton = Button(self.f, text="Se connecter", font=self.font, command=tentativeDeConnexion) bouton.grid(column=0, row=5, columnspan=3, padx=ecart, pady=20) - bouton.bind("", send) + bouton.bind("", tentativeDeConnexion) - fenetre.mainloop() # Affichage de la fenêtre + Button(self.f, text="Quitter", command=self.f.destroy).grid() if __name__ == "__main__": - """ - "Application "GesMag" pour le module de Programmation d'interfaces (2021-2022) - KENNEL Anri (20010664) - L2A - """ + """"Application "GesMag" pour le module de Programmation d'interfaces (2021-2022)""" print("-- Compte par défaut --\nNom d'utilisateur: admin\nMot de passe: P@ssword\n") GesMag().demarrer()