Petit Projet n°1

Générateur de mots de passe

Application en Python

Pourquoi et Comment ?

Télécharger

Pourquoi, pour le fun, juste comme ça, une idée qui finalement s'avère être une bonne idée.

Et comment, eh bien voici coment :

#Copyright (c) 2024 Polak-Man#5938

import random
import string
import tkinter as tk

class PasswordGenerator:

    def __init__(self, master):
        self.master = master
        master.title("Générateur de mot de passe aléatoire")
        master.geometry("900x450")

        # Crée une étiquette pour afficher la longueur du mot de passe
        self.length_label = tk.Label(master, text="Longueur du mot de passe :")
        self.length_label.pack(anchor=tk.CENTER, pady=10)

        # Crée une barre de défilement pour choisir la longueur du mot de passe
        self.length_scale = tk.Scale(master, from_=8, to=100, orient=tk.HORIZONTAL, length=600, sliderlength=20, sliderrelief='solid', highlightbackground='black', highlightcolor='red')
        self.length_scale.pack(anchor=tk.CENTER, pady=10)

        # Crée un bouton pour générer le mot de passe
        self.generate_button = tk.Button(master, text="Générer", command=self.generate_password)
        self.generate_button.pack(anchor=tk.CENTER, pady=10)

        # Crée des boutons pour activer ou non les majuscules, les nombres et les symboles
        self.uppercase_var = tk.BooleanVar()
        self.uppercase_checkbutton = tk.Checkbutton(master, text="Majuscules", variable=self.uppercase_var)
        self.uppercase_checkbutton.pack(anchor=tk.CENTER)

        self.digits_var = tk.BooleanVar()
        self.digits_checkbutton = tk.Checkbutton(master, text="Nombres", variable=self.digits_var)
        self.digits_checkbutton.pack(anchor=tk.CENTER)

        self.symbols_var = tk.BooleanVar()
        self.symbols_checkbutton = tk.Checkbutton(master, text="Symboles", variable=self.symbols_var)
        self.symbols_checkbutton.pack(anchor=tk.CENTER)

        # Crée une étiquette pour afficher le mot de passe généré
        self.password_label = tk.Label(master, text="")
        self.password_label.pack(anchor=tk.CENTER, pady=10, fill=tk.BOTH, expand=True)

        # Crée un bouton pour copier le mot de passe généré dans le presse-papiers
        self.copy_button = tk.Button(master, text="Copier le mot de passe", command=self.copy_password)
        self.copy_button.pack(anchor=tk.CENTER, pady=10)

        # Centre verticalement tous les éléments
        master.grid_rowconfigure(0, weight=1)
        master.grid_rowconfigure(2, weight=1)
        master.grid_rowconfigure(3, weight=1)
        master.grid_rowconfigure(4, weight=1)

    # Génère un mot de passe aléatoire
    def generate_password(self):
        length = self.length_scale.get()
        letters = ''
        if self.uppercase_var.get():
            letters += string.ascii_uppercase
        letters += string.ascii_lowercase
        if self.digits_var.get():
            letters += string.digits
        if self.symbols_var.get():
            letters += string.punctuation
        password = ''.join(random.choice(letters) for i in range(length))
        self.password_label.config(text="Voici votre mot de passe : " + password)
        self.password = password

    # Copie le mot de passe généré dans le presse-papiers
    def copy_password(self):
        self.master.clipboard_clear()
        self.master.clipboard_append(self.password)

root = tk.Tk()
my_gui = PasswordGenerator(root)
root.mainloop()