Il existe plus d’un milliard de sites web sur Internet. Pour garantir la sécurité des comptes des utilisateurs, de nombreuses applications web – de la banque en ligne aux médias sociaux – nécessitent une page de connexion.
Apprenez à créer une simple page de connexion à l’aide du module Tkinter et familiarisez-vous avec les concepts de base de la construction d’applications GUI en Python.
Le module Tkinter
Vous pouvez utiliser Tkinter pour créer une page de connexion qui accepte et valide un nom d’utilisateur et un mot de passe. Tkinter offre une variété de widgets tels que des boutons, des étiquettes et des zones de texte qui facilitent le développement d’applications. Parmi les applications que vous pouvez développer à l’aide de Tkinter, citons une application To-Do, un lecteur de musique, une application Pomodoro Timer et un jeu Word Jumble.
Pour installer Tkinter, ouvrez un terminal et exécutez :
pip install tkinter
Comment construire une page de connexion en utilisant Python
Vous pouvez trouver le code source pour créer une page de connexion en utilisant Python dans ce dépôt GitHub.
Importez les bibliothèques nécessaires et initialisez la fenêtre racine. Définissez le titre et la taille de la fenêtre. En utilisant l’outil configure() permet de définir la couleur d’arrière-plan.
import tkinter
from tkinter import messagebox
window = tkinter.Tk()
window.title("Login Page using Python")
window.geometry('750x550')
window.configure(bg='#8F00FF')
Définir une fonction, login() qui prendra la décision clé en fonction des informations d’identification de l’utilisateur. Cette démo simple code en dur les informations d’identification valides ; une application réelle devrait probablement les récupérer dans une base de données.
Stocker les informations d’identification et utiliser la fonction get() de chaque widget Entry pour récupérer les données saisies par l’utilisateur. En fonction de la validation des données, afficher une boîte de message avec le titre et le message appropriés.
def login():
username = "makeuseof"
password = "muo"
if username_entry.get()==username and password_entry.get()==password:
messagebox.showinfo(title="Login Successful!", message="You successfully logged in.")
else:
messagebox.showerror(title="Error", message="Invalid login.")
Définissez un cadre Tkinter qui servira de parent et donnez-lui une couleur d’arrière-plan.
frame = tkinter.Frame(bg='#8F00FF')
Définissez trois étiquettes pour le login, le nom d’utilisateur et le mot de passe. Passez la fenêtre parent dans laquelle vous voulez placer les étiquettes, le texte qu’elle doit afficher, la couleur d’arrière-plan, la couleur de la police et le style de police qu’elle doit avoir.
login_label = tkinter.Label(frame, text="Login Page Using Python", bg='#000000', fg="#DC143C", font=("Arial", 30))
username_label = tkinter.Label(frame, text="Username", bg='#8F00FF', fg="#FFFFFF", font=("Arial", 16, 'bold'))
password_label = tkinter.Label(frame, text="Password", bg='#8F00FF', fg="#FFFFFF", font=("Arial", 16, 'bold'))
Définissez deux widgets d’entrée pour obtenir les données de l’utilisateur. Définissez la fenêtre parente dans laquelle vous souhaitez les placer ainsi que les styles de police. Utilisez la fonction afficher sous la forme d’un astérisque pour dissimuler le mot de passe que l’utilisateur tape à l’écran.
username_entry = tkinter.Entry(frame, font=("Arial", 16))
password_entry = tkinter.Entry(frame, show="*", font=("Arial", 16))
Définissez un bouton de connexion qui accepte la fenêtre parent comme cadre que vous avez défini précédemment, le texte qu’il doit afficher, la couleur d’arrière-plan, la couleur de la police, le style de police et la commande qu’il doit exécuter lorsqu’il est cliqué.
login_button = tkinter.Button(frame, text="Login", bg="#DC143C", fg="#FFFFFF", font=("Arial", 16), command=login)
Utilisez le gestionnaire de grille pour placer les trois étiquettes, les deux entrées et le bouton de connexion dans un format tabulaire organisé. L’étiquette de connexion servira d’en-tête et occupera les deux colonnes. L’option sticky spécifie à quel bord de la cellule le widget doit se coller. En la passant comme nouvelles (nord-est-ouest-sud), le programme centre le texte à la fois dans le sens horizontal et dans le sens vertical.
Placez les étiquettes sur le côté gauche, l’une en dessous de l’autre, et faites de même pour les widgets d’entrée sur le côté droit. Comme pour l’en-tête, placez le bouton de connexion sur les deux colonnes. Donnez à tous les widgets un espacement approprié dans la direction des ordonnées.
login_label.grid(row=0, column=0, columnspan=2, sticky="news", pady=40)
username_label.grid(row=1, column=0)
username_entry.grid(row=1, column=1, pady=20)
password_label.grid(row=2, column=0)
password_entry.grid(row=2, column=1, pady=20)
login_button.grid(row=3, column=0, columnspan=2, pady=30)
Utilisez la fonction pack() pour organiser tous les widgets en blocs et exécuter la boucle d’événements Tkinter et écouter les événements jusqu’à ce que vous fermiez la fenêtre.
frame.pack()
window.mainloop()
Assemblez tout le code et votre page de connexion est prête à l’emploi.
Exemple de sortie de la page de connexion
Après avoir exécuté le programme et saisi les informations d’identification valides, le programme affiche une boîte de message indiquant que l’utilisateur peut se connecter avec succès.
Lorsque le programme est exécuté avec un autre identifiant, la boîte de message affiche une erreur indiquant que l’identifiant n’est pas valide.
Améliorer une page de connexion en Python
Vous pouvez utiliser une base de données telle que MySql pour récupérer les enregistrements et les valider par rapport aux informations d’identification de l’utilisateur. Le système mysql.connector vous aide à établir une connexion entre votre application Python Tkinter et la base de données MySql.
Pour une interface utilisateur améliorée, vous pouvez explorer la bibliothèque customtkinter . Il est purement construit sur le module Tkinter. Il est purement construit sur le module Tkinter et vous aide à créer des widgets modernes et entièrement personnalisables qui ne sont pas disponibles dans la bibliothèque Tkinter standard. La combinaison de ces deux bibliothèques amplifiera vos compétences en matière de programmation d’interfaces graphiques et servira de tremplin à la création d’applications plus sophistiquées.