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

91 lines
4.3 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 = (largeur // 2) - (taille[0] // 2)
y = (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.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 _interfaceConnexion(self):
"""Affiche la fenêtre de connexion."""
# Paramètres de la fenêtre
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
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(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("<Return>", 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
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))
bouttonAffichageMDP = Button(self.f, text='👁', command=lambda: __afficherMDP(self))
bouttonAffichageMDP.grid(column=2, row=4, columnspan=2)
self.mdpVisible = False
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("<Return>", tentativeDeConnexion)
Button(self.f, text="Quitter", command=self.f.destroy).grid()
if __name__ == "__main__":
""""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()