Suivez ce didacticiel pour apprendre à créer une application de gestion de données de base avec une simple interface graphique.
Un système d'emprunt de livres est un moyen très pratique pour les bibliothécaires de gérer les activités d'inventaire et d'emprunt. Cette application simple est idéale pour les petites et grandes bibliothèques, les centres communautaires, les clubs de lecture et même pour votre collection personnelle de livres.
En écrivant l'exemple d'application, vous apprendrez comment créer une application graphique multiplateforme, comment utiliser des classes et des objets pour modéliser des entités et comment modulariser vos programmes.
Installation de Tkinter et création de l'écran de connexion/enregistrement de l'utilisateur
Pour construire le système d'emprunt de livres, vous utiliserez Tkinter. Tkinter est la bibliothèque graphique standard pour les applications de bureau Python. Pour l'installer, tapez dans le terminal :
pip install tkinter
Vous pouvez trouver le code source complet de la construction d'un système d'emprunt de livres pour les bibliothèques dans ce
Référentiel GitHub.Importez les modules requis et définissez une classe, Système d'emprunt de livres. Définissez une méthode constructeur pour la classe et initialisez la fenêtre racine, en définissant le titre, les dimensions et la couleur d'arrière-plan de l'application. Définir deux listes, livres et prêter_liste, que vous utiliserez pour stocker les titres des livres et ceux que les gens ont empruntés.
Définir un dictionnaire, enregistrer, que vous pouvez utiliser pour mettre à jour le statut des livres. Utilisez le setup_gui() méthode pour créer l'interface utilisateur graphique et initialiser une liste vide, bibliothécaires, que vous utiliserez pour stocker les informations d'identification.
import tkinter as tk
from tkinter import messagebox
classBookBorrowingSystem:
def__init__(self):
self.master = tk.Tk()
self.master.title("Book Borrowing System")
self.master.geometry("750x600")
self.master.config(bg='#708090')
self.books = []
self.lend_list = []
self.record = {}
self.setup_gui()
self.librarians = []
Définir une méthode, setup_gui(). Pour l'écran d'enregistrement/de connexion, vous allez créer trois étiquettes nommées login_label, nom_utilisateur_étiquette, et mot_de_passe_étiquette. Pour chaque étiquette, définissez l'élément parent dans lequel vous souhaitez le placer, le texte qu'il doit afficher, le style de police qu'il doit avoir ainsi que la couleur de la police.
En plus des étiquettes, vous devez créer deux widgets d'entrée nommés username_entry et password_entry pour obtenir et stocker les informations d'identification du bibliothécaire. Vous pouvez construire un vérificateur de mot de passe pour tester la sécurité de votre mot de passe avec Python. Utilisez le paquet gestionnaire pour organiser tous ces widgets et ajouter le rembourrage approprié pour un attrait visuel.
defsetup_gui(self):
self.login_label = tk.Label(self.master, text="Book Borrowing System", font=("Helvetica", 24), bg='#708090', fg='white')
self.login_label.pack(pady=(30, 10))
self.login_button = tk.Button(self.master, text="Login", command=self.login, font=("Helvetica", 14))
self.login_button.pack(pady=10)
# Similarly, create the username_label, username_entry, password_label,
# password_entry, and the register button
Définir une méthode, connexion(). Utilisez le obtenir() méthode sur le widget d'entrée pour extraire la valeur des informations d'identification saisies par le bibliothécaire. Parcourez la liste des bibliothécaires et vérifiez si le nom d'utilisateur et le mot de passe correspondent aux valeurs saisies. Si oui, effacez les valeurs saisies du début à la fin. Détruisez tous les widgets que vous avez créés et appelez le book_management_screen() méthode pour afficher l'écran de gestion du système d'emprunt de livres.
Sinon, les identifiants de connexion sont incorrects ou le bibliothécaire ne s'est pas inscrit. Affichez le message approprié via le widget de boîte de message de Tkinter. Au cas où vous voudriez cryptez votre mot de passe, installez le module bcrypt.
deflogin(self):
username = self.username_entry.get()
password = self.password_entry.get()for librarian in self.librarians:
if username == librarian[0] and password == librarian[1]:
self.username_entry.delete(0, tk.END)
self.password_entry.delete(0, tk.END)
self.login_label.destroy()# Destroy all the entries, labels, and buttons
self.book_management_screen()
return
messagebox.showerror("Error", "Invalid username or password. Please register if not done already.")
Définir une méthode, enregistrer(). Extrayez la valeur des informations d'identification saisies par le bibliothécaire, ajoutez-les à la liste du bibliothécaire et effacez complètement les entrées.
defregister(self):
username = self.username_entry.get()
password = self.password_entry.get()
self.librarians.append([username, password])
self.username_entry.delete(0, tk.END)
self.password_entry.delete(0, tk.END)
Définir une méthode, book_management_screen(). Créez quatre étiquettes nommées add_book_label, return_book_label, remove_book_label, et issue_book_label. Créez quatre entrées et quatre boutons correspondant à ces étiquettes, et un autre bouton pour afficher la liste de tous les livres avec leur statut. Utilisez le gestionnaire de packs pour organiser les éléments et ajouter du rembourrage.
defbook_management_screen(self):
self.add_book_label = tk.Label(self.master, text="Add Book", font=("Helvetica", 18), bg='#708090', fg='white')
self.add_book_label.pack(pady=(20, 5))
self.add_book_entry = tk.Entry(self.master, font=("Helvetica", 14))
self.add_book_entry.pack()
self.add_book_button = tk.Button(self.master, text="Add Book", command=self.add_book, font=("Helvetica", 14))
self.add_book_button.pack(pady=5)# Repeat the same for return_book, remove_book, issue_book
self.view_books_button = tk.Button(self.master, text="View Books", command=self.view_books, font=("Helvetica", 14))
self.view_books_button.pack(pady=10)
Construire la fonctionnalité du système d'emprunt de livres
Définir une méthode, add_book(). Extrayez le contenu du widget d'entrée et ajoutez-le à la liste des livres. Dans le dictionnaire d'enregistrements, ajoutez la clé comme titre du livre et la valeur comme ajoutée. Affichez une boîte de message indiquant que le programme a ajouté le livre avec succès. Effacer le contenu du add_book_entry du début à la fin.
defadd_book(self):
book = self.add_book_entry.get()
self.books.append(book)
self.record[book] = "added"
messagebox.showinfo("Success", "Book added successfully")
self.add_book_entry.delete(0, tk.END)
Définir une méthode, remove_book(). Extraire le titre du livre et vérifier s'il est présent dans le livres liste. S'il existe, supprimez-le ainsi que son enregistrement du dictionnaire. Une fois cela fait, affichez une boîte de message de réussite informant que le programme a supprimé le livre. Sinon, affichez une boîte de message d'erreur indiquant que le livre n'a pas été trouvé. Effacer l'entrée du remove_book_entry complètement.
defremove_book(self):
book = self.remove_book_entry.get()if book in self.books:
self.books.remove(book)if book in self.record:
del self.record[book]messagebox.showinfo("Success", "Book removed successfully")
else:
messagebox.showerror("Error", "Book not found")
self.remove_book_entry.delete(0, tk.END)
Définir une méthode, issue_book(). Extraire le titre du livre et vérifier s'il existe dans le livres liste. Si oui, joignez-le au prêter_liste list et supprimez-le de la liste des livres. Mettre à jour la valeur du livre comme publié. Sinon, affichez une boîte de message d'erreur indiquant que le livre n'a pas été trouvé. Effacer le contenu du issue_book_entry().
defissue_book(self):
book = self.issue_book_entry.get()if book in self.books:
self.lend_list.append(book)
self.books.remove(book)
self.record[book] = "issued"
messagebox.showinfo("Success", "Book issued successfully")
else:
messagebox.showerror("Error", "Book not found")
self.issue_book_entry.delete(0, tk.END)
Définir une méthode, return_book(). Extraire le titre et vérifier s'il existe dans le prêter_liste liste. Si oui, supprimez-le et rajoutez-le à la liste des livres et mettez à jour la valeur dans l'enregistrement tel qu'il est renvoyé. Affichez une boîte de message indiquant que la personne a rendu le livre.
Si le titre existe dans la liste de livres et que le statut de la notice indique ajoutée, affichez une boîte de message d'erreur indiquant que la personne ne peut pas rendre le livre car personne ne l'a délivré. Sinon, affichez une boîte de message d'erreur indiquant que le livre est introuvable.
defreturn_book(self):
book = self.return_book_entry.get()if book in self.lend_list:
self.lend_list.remove(book)
self.books.append(book)
self.record[book] = "returned"
messagebox.showinfo("Success", "Book returned successfully")
elif book in self.books and self.record.get(book) == "added":
messagebox.showerror("Error", "Book can't be returned. It hasn't been issued.")
else:
messagebox.showerror("Error", "Book not found.")
self.return_book_entry.delete(0, tk.END)
Définir une méthode, view_books(). Initialiser le message variable comme vide. Construisez le message pour effectuer une interpolation de chaîne et afficher le titre des livres avec leur statut. Si le message est vide, aucun livre n'est disponible. Affichez la sortie correspondante dans une boîte de message.
defview_books(self):
message = ""for book, status in self.record.items():
message += f"{book}: {status}\n"ifnot message:
message = "No book records available."
messagebox.showinfo("Books", message)
Créez une instance de la classe et exécutez le Tkinter boucle principale() pour écouter les événements jusqu'à ce que vous fermiez la fenêtre. Utiliser le __nom__ == "__principal__" idiome pour exécuter le programme.
defrun(self):
self.master.mainloop()
if __name__ == "__main__":
book_borrowing_system = BookBorrowingSystem()
book_borrowing_system.run()
Exemple de résultat du système d'emprunt de livres
Lors de l'exécution du programme, il vous accueille avec un écran d'enregistrement/de connexion. En saisissant les informations d'identification et en cliquant sur le Enregistrer bouton, le programme vous ajoute en tant que bibliothécaire. Saisir les mêmes informations d'identification et appuyer sur Connexion vous dirigera vers l'écran de gestion.
En saisissant le titre du livre et en appuyant sur Ajouter un livre, le programme affiche une boîte de message indiquant qu'il a ajouté le livre avec succès. Si vous cliquez sur le bouton problème, retour ou suppression, le programme affiche la boîte de message appropriée lors de la mise à jour de l'état.
En cliquant sur le Afficher les livres bouton, le programme affiche le titre des livres ainsi que leur statut. Si vous supprimez un livre, le programme supprime le titre et vous ne pouvez pas le visualiser.
Si vous essayez de rendre un livre sans le publier ou de supprimer un livre alors qu'il est publié, le programme affiche une boîte de message d'erreur.
Améliorer l'application d'emprunt de livres
Cette implémentation est une base pour la création d'une application GUI sécurisée au niveau de la production. Vous pouvez améliorer sa fonctionnalité en implémentant la validation des entrées, en utilisant hashlib pour stocker les mots de passe, mettre en œuvre une gestion appropriée des erreurs et ajouter la persistance des données avec une base de données.
En dehors de cela, vous devez implémenter des niveaux d'authentification des utilisateurs avec différents niveaux d'accès pour les lecteurs, les bibliothécaires et les administrateurs. Vous pouvez ajouter une fonctionnalité de recherche pour rechercher des livres et en faciliter l'accès.