71 lines
3 KiB
Python
71 lines
3 KiB
Python
|
import tkinter.messagebox as messagebox
|
||
|
|
||
|
from tkinter import *
|
||
|
from users import Utilisateurs # import de mon fichier pour gérer la base de donnée
|
||
|
|
||
|
def centrerFenetre(fenetre, taille: tuple):
|
||
|
"""Permet de centrer une fenêtre"""
|
||
|
largeur = fenetre.winfo_screenwidth()
|
||
|
hauteur = fenetre.winfo_screenheight()
|
||
|
|
||
|
x = int(largeur / 2 - taille[0] / 2)
|
||
|
y = int(hauteur / 2 - taille[1] / 2)
|
||
|
|
||
|
fenetre.geometry(f"+{x}+{y}")
|
||
|
|
||
|
class GesMag:
|
||
|
"""Instancie une fenêtre Tkinter."""
|
||
|
def demarrer(self) -> None:
|
||
|
"""Lance le programme 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()
|
||
|
|
||
|
def connexion(self, utilisateur: str, motDePasse: str):
|
||
|
if len(utilisateur) == 0 or len(motDePasse) == 0 or len(motDePasse) < 8:
|
||
|
messagebox.showerror("Erreur", "Utilisateur ou mot de passe incorrect.")
|
||
|
return
|
||
|
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):
|
||
|
"""Affiche la fenêtre de connexion."""
|
||
|
# Paramètres de la fenêtre
|
||
|
fenetre = Tk()
|
||
|
taille = (400, 600)
|
||
|
fenetre.geometry(f"{taille[0]}x{taille[1]}")
|
||
|
centrerFenetre(fenetre, taille)
|
||
|
fenetre.title("Fenêtre de connexion")
|
||
|
|
||
|
# 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)
|
||
|
|
||
|
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)
|
||
|
utilisateur.grid(column=1, row=2, columnspan=2, padx=ecart)
|
||
|
|
||
|
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='*')
|
||
|
motDpasse.grid(column=1, row=4, columnspan=2, padx=ecart)
|
||
|
motDpasse.bind("<Return>", send)
|
||
|
|
||
|
bouton = Button(text="Se connecter", font=self.font, command=send)
|
||
|
bouton.grid(column=0, row=5, columnspan=3, padx=ecart, pady=20)
|
||
|
bouton.bind("<Return>", send)
|
||
|
|
||
|
fenetre.mainloop() # Affichage de la fenêtre
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
"""
|
||
|
"Application "GesMag" pour le module de Programmation d'interfaces (2021-2022)
|
||
|
KENNEL Anri (20010664) - L2A
|
||
|
"""
|
||
|
print("-- Manager --\nNom: Manager\nMot de passe: password123\n")
|
||
|
print("-- Caissier --\nNom: Caissier\nMot de passe: 123password\n")
|
||
|
GesMag().demarrer()
|