finalizing manager gui :

- adding buttons and label
This commit is contained in:
Mylloon 2021-11-21 12:40:03 +01:00
parent 2c8189d651
commit 5a6bf1bf19

33
main.py
View file

@ -1,6 +1,6 @@
import tkinter.messagebox as messagebox import tkinter.messagebox as messagebox
from tkinter import IntVar, Checkbutton, Scrollbar, Listbox, Entry, Button, Label, Frame, Tk, Toplevel from tkinter import IntVar, Checkbutton, LabelFrame, Scrollbar, Listbox, Entry, Button, Label, Frame, Tk, Toplevel
from re import sub from re import sub
from users import Utilisateurs # import de mon fichier pour gérer la base de donnée from users import Utilisateurs # import de mon fichier pour gérer la base de donnée
@ -76,7 +76,8 @@ class GesMag:
"""Détermine si une date de naissance suit la politique du programme ou non.""" """Détermine si une date de naissance suit la politique du programme ou non."""
if len(naissance) == 0: if len(naissance) == 0:
return False return False
if sub(r"\d{4}\/\d{2}\/\d{2}", '', naissance) != '': # lien pour mieux comprendre ce qui se passe : https://www.debuggex.com/r/hSD-6BfSqDD1It5Z
if sub(r"[0-9]{4}\/(0[1-9]|1[0-2])\/(0[1-9]|[1-2][0-9]|3[0-1])", '', naissance) != '':
return False return False
return True return True
@ -197,7 +198,7 @@ class GesMag:
"""Affiche l'interface du manager.""" """Affiche l'interface du manager."""
manager = Utilisateurs().recuperationUtilisateur(id=id) manager = Utilisateurs().recuperationUtilisateur(id=id)
self.parent.title(f"Manager {manager['nom']} {manager['prenom']}") self.parent.title(f"Manager {manager['nom']} {manager['prenom']}")
self.dimensionsFenetre(self.parent, 530, 720) self.dimensionsFenetre(self.parent, 580, 310)
# Suppresssion de la dernière Frame # Suppresssion de la dernière Frame
self.f.destroy() self.f.destroy()
@ -387,12 +388,22 @@ class GesMag:
utilisateur = Utilisateurs().recuperationUtilisateur(pseudo=listeUtilisateurs.get(element[0]).split('(')[0][:-1]) utilisateur = Utilisateurs().recuperationUtilisateur(pseudo=listeUtilisateurs.get(element[0]).split('(')[0][:-1])
enfant = Toplevel(self.f) # cf. l'explication dans `__ajouterUtilisateur` enfant = Toplevel(self.f) # cf. l'explication dans `__ajouterUtilisateur`
enfant.title(f"{utilisateur['nom']} {utilisateur['prenom']}") enfant.title(f"{utilisateur['nom']} {utilisateur['prenom']}")
# Informations sur l'utilisateur
frameInfos = LabelFrame(enfant, text="Informations utilisateur", font=self.font)
frameInfos.grid(column=0, row=0, sticky='n', padx=5)
utilisateur["metier"] = "Manager" if utilisateur["metier"] == 0 else "Caissier" utilisateur["metier"] = "Manager" if utilisateur["metier"] == 0 else "Caissier"
del utilisateur["passe"] # le manager ne doit pas connaître le mot de passe de l'utilisateur del utilisateur["passe"] # le manager ne doit pas connaître le mot de passe de l'utilisateur
for idx, cle in enumerate(utilisateur): for idx, cle in enumerate(utilisateur):
Label(enfant, text=f"{cle.capitalize()} :").grid(column=0, row=idx, sticky='e') Label(frameInfos, text=f"{cle.capitalize()} :").grid(column=0, row=idx + 1, sticky='e')
Label(enfant, text=utilisateur[cle]).grid(column=1, row=idx, sticky='w') Label(frameInfos, text=utilisateur[cle]).grid(column=1, row=idx + 1, sticky='w')
Button(enfant, text="Quitter", command=enfant.destroy).grid(column=3, row=0, sticky='w')
frameSuivi = LabelFrame(enfant, text="Suivi des ventes", font=self.font)
frameSuivi.grid(column=1, row=0, sticky='n', padx=5)
Label(frameSuivi, text="Aucun résultat récemment enrengistré").grid()
Button(enfant, text="Quitter", command=enfant.destroy).grid(column=0, row=1, columnspan=2)
Button(self.f, text="Ajouter un caissier", font=self.font, command=lambda: __ajouterUtilisateur(1)).grid(column=0, row=2) 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) Button(self.f, text="Retirer un caissier", font=self.font, command=lambda: __retirerUtilisateur(1)).grid(column=1, row=2)
@ -441,6 +452,14 @@ class GesMag:
else: # ce cas est là au cas où mais n'est pas sensé être appellé else: # ce cas est là au cas où mais n'est pas sensé être appellé
raise NameError("Métier inconnu.") raise NameError("Métier inconnu.")
# Label d'information
Label(self.f, text="""
Double-cliquez sur un
utilisateur de la liste
pour obtenir des informations
supplémentaire sur son sujet.
""", justify="right").grid(column=1, row=4, rowspan=2, sticky="e")
Label(self.f, text="Liste des utilisateurs", font=self.font).grid(column=0, row=4) # titre 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 # On définit une barre pour pouvoir scroller dans la liste
scroll = Scrollbar(self.f, orient="vertical") scroll = Scrollbar(self.f, orient="vertical")
@ -460,6 +479,8 @@ class GesMag:
Checkbutton(filtres, text="Manager", variable=managerVerif, command=lambda: __ajouterUtilisateursListe(listeUtilisateurs)).grid(sticky='w') Checkbutton(filtres, text="Manager", variable=managerVerif, command=lambda: __ajouterUtilisateursListe(listeUtilisateurs)).grid(sticky='w')
Checkbutton(filtres, text="Caissier", variable=caissierVerif, command=lambda: __ajouterUtilisateursListe(listeUtilisateurs)).grid(sticky='w') Checkbutton(filtres, text="Caissier", variable=caissierVerif, command=lambda: __ajouterUtilisateursListe(listeUtilisateurs)).grid(sticky='w')
Button(self.f, text="Passer en mode caissier", font=self.font).grid(column=0, row=6, columnspan=3, pady=10)
if __name__ == "__main__": if __name__ == "__main__":
"""Application "GesMag" pour le module de Programmation d'interfaces (2021-2022)""" """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") print("-- Compte par défaut --\nNom d'utilisateur: admin\nMot de passe: P@ssword")