diff --git a/main.py b/main.py index 4dd6c01..00a38fa 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,6 @@ import tkinter.messagebox as messagebox -from tkinter import Tk, Frame, Label, Button, Entry, W +from tkinter import Scrollbar, Listbox, Tk, Frame, Label, Button, Entry from re import sub from users import Utilisateurs # import de mon fichier pour gérer la base de donnée @@ -94,18 +94,18 @@ class GesMag: self.f.destroy() # Instanciation d'une nouvelle Frame, on va donc ajouter tout nos widgets à cet Frame self.f = Frame(self.parent) - self.f.pack() + self.f.grid() # Affichage des labels et boutons tentativeDeConnexion = lambda _ = None: self.connexion(utilisateur.get(), motDpasse.get()) # lambda pour envoyer les informations entrés dans le formulaire ecart = 80 # écart pour avoir un affichage centré Label(self.f).grid(row=0, pady=50) # utilisé pour du padding (meilleur affichage) - Label(self.f, text="Utilisateur", font=self.font).grid(column=0, row=1, columnspan=2, padx=ecart - 20, pady=20, sticky=W) + 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) + 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) @@ -132,11 +132,11 @@ class GesMag: Button(self.f, text="Quitter", font=self.font, command=quit).grid(column=0, row=6, columnspan=4, pady=20) - self._interfaceManager(1) + self._interfaceManager(1) # DEBUG: affiche directement l'interface du Manager def _interfaceCaissier(self, id: int): """Affiche l'interface du caissier.""" - caissier = Utilisateurs().recuperationUtilisateur(id)[0] + caissier = Utilisateurs().recuperationUtilisateur(id=id)[0] self.parent.title(f"Caissier {caissier[3]} {caissier[4]}") self.dimensionsFenetre(1280, 720) @@ -144,21 +144,62 @@ class GesMag: self.f.destroy() # Instanciation d'une nouvelle Frame, on va donc ajouter tout nos widgets à cet Frame self.f = Frame(self.parent) - self.f.pack() + self.f.grid() def _interfaceManager(self, id: int): """Affiche l'interface du manager.""" - manager = Utilisateurs().recuperationUtilisateur(id) + manager = Utilisateurs().recuperationUtilisateur(id=id) self.parent.title(f"Manager {manager['nom']} {manager['prenom']}") - self.dimensionsFenetre(1280, 720) + self.dimensionsFenetre(530, 720) # Suppresssion de la dernière Frame self.f.destroy() # Instanciation d'une nouvelle Frame, on va donc ajouter tout nos widgets à cet Frame self.f = Frame(self.parent) - self.f.pack() + self.f.grid() - Label(self.f, text="ceci est un giga label").grid() + Label(self.f, text="Interface Manager", font=(self.font[0], 20)).grid(column=0, row=0) + + Button(self.f, text="Se déconnecter", font=self.font, command=self._interfaceConnexion).grid(column=1, row=0, padx=50) + + Label(self.f).grid(row = 1, pady=10) # séparateur + + def __ajouterUtilisateur(metier: int): + """Permet de créer un nouvel utilisateur, manager (`metier = 0`) et caissier (`metier = 1`).""" + print(f"ajout d'un utilisateur (métier = {metier})") + # ouvrir un toplevel? + + def __retirerUtilisateur(metier: int): + """Permet de supprimer un utilisateur existant, manager (`metier = 0`) et caissier (`metier = 1`).""" + print(f"retirer un utilisateur (métier = {metier})") + # ouvrir un toplevel? + + def __afficherInformationsUtilisateur(_): + """Permet d'afficher les informations d'un utilisateur""" + element = listeUtilisateurs.curselection() + if len(element) == 0: # si aucun élément n'est selectionné + return + print(Utilisateurs().recuperationUtilisateur(pseudo=listeUtilisateurs.get(element[0]))) + # ouvrir un toplevel? + + Button(self.f, text="Ajouter un caissier", font=self.font, command=lambda: __ajouterUtilisateur(1)).grid(column=0, row=2) + Button(self.f, text="Retirer un caissier", font=self.font, command=lambda: __retirerUtilisateur(1)).grid(column=1, row=2) + + Label(self.f).grid(row = 3, pady=10) # séparateur + + # Liste des utilisateurs + Label(self.f, text="Liste des utilisateurs", font=self.font).grid(column=0, row=4) # titre + # On définit une barre pour pouvoir scroller dans la liste + scroll = Scrollbar(self.f, orient="vertical") + scroll.grid(column=0, row=5, sticky="nse") + # On définit notre liste et on la lie à notre `Scrollbar` + listeUtilisateurs = Listbox(self.f, width=25, height=4, yscrollcommand=scroll.set) + scroll['command'] = listeUtilisateurs.yview + # On ajoute nos utilisateurs à notre liste + for idx, utilisateur in enumerate(Utilisateurs().listUtilisateurs()): + listeUtilisateurs.insert(idx, utilisateur) + listeUtilisateurs.grid(column=0, row=5) + listeUtilisateurs.bind('', __afficherInformationsUtilisateur) # on affiche l'utilisateur quand on double-clique dessus if __name__ == "__main__": """Application "GesMag" pour le module de Programmation d'interfaces (2021-2022)"""