This repository has been archived on 2022-03-31. You can view files and clone it, but cannot push or open issues or pull requests.
GesMag/main.py

85 lines
3.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 dimensionsFenetre(fenetre, taille: tuple):
"""Permet de définir une fenetre centrer sur l'écran"""
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"{taille[0]}x{taille[1]}+{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."""
global mdpVisible
# Paramètres de la fenêtre
fenetre = Tk()
taille = (400, 600)
dimensionsFenetre(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, width=18)
utilisateur.grid(column=1, row=2, columnspan=2, padx=ecart)
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
self.mdpVisible = True
motDpasse.config(show='')
bouttonAffichageMDP.config(font=("Arial", 10, "overstrike"))
else: # inversement
self.mdpVisible = False
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("<Return>", send)
bouttonAffichageMDP = Button(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.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("-- Compte par défaut --\nNom d'utilisateur: admin\nMot de passe: P@ssword\n")
GesMag().demarrer()