Basit bir GUI ön ucu ile temel bir veri yönetimi uygulamasının nasıl oluşturulacağını öğrenmek için bu öğreticiyi takip edin.
Bir kitap ödünç alma sistemi, kütüphaneciler için envanter ve ödünç alma faaliyetlerini yönetmenin süper uygun bir yoludur. Bu basit uygulama, küçük ve büyük kütüphaneler, topluluk merkezleri, kitap kulüpleri ve hatta kişisel kitap koleksiyonunuz için idealdir.
Örnek uygulamayı yazarken, platformlar arası bir GUI uygulaması oluşturmayı, varlıkları modellemek için sınıfları ve nesneleri nasıl kullanacağınızı ve programlarınızı nasıl modüler hale getireceğinizi öğreneceksiniz.
Tkinter Kurulumu ve Kullanıcı Giriş/Kayıt Ekranının Oluşturulması
Kitap ödünç alma sistemini oluşturmak için Tkinter'dan yararlanacaksınız. Tkinter, Python masaüstü uygulamaları için standart GUI kitaplığıdır. Kurmak için terminale şunu yazın:
pip install tkinter
Kütüphaneler için bir kitap ödünç alma sistemi oluşturmanın tüm kaynak kodunu burada bulabilirsiniz. GitHub deposu.
Gerekli modülleri içe aktarın ve bir sınıf tanımlayın,
Kitap Ödünç Alma Sistemi. Sınıf için bir yapıcı yöntemi tanımlayın ve uygulamanın başlığını, boyutlarını ve arka plan rengini ayarlayarak kök pencereyi başlatın. İki liste tanımlayın, kitabın Ve ödünç_listesi, kitapların adlarını ve hangilerinin ödünç alındığını saklamak için kullanacağınız.Bir sözlük tanımlayın, kayıt, kitapların durumunu güncellemek için kullanabileceğiniz. Kullan kurulum_gui() grafiksel kullanıcı arabirimi oluşturma ve boş bir liste başlatma yöntemi, kütüphaneciler, kimlik bilgilerini depolamak için kullanacağınız.
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 = []
Bir yöntem tanımlayın, kurulum_gui(). Kayıt/oturum açma ekranı için, adında üç etiket oluşturacaksınız. giriş_etiketi, kullanıcı_etiketi, Ve şifre_etiketi. Her etiket için, onu yerleştirmek istediğiniz üst öğeyi, görüntülemesi gereken metni, sahip olması gereken yazı tipi stilini ve yazı tipi rengini tanımlayın.
Etiketlerle birlikte, adlı iki giriş widget'ı oluşturmanız gerekir. username_entry Ve password_entry kütüphanecinin kimlik bilgilerini almak ve saklamak için. inşa edebilirsiniz Python ile parola güvenliğinizi test etmek için parola denetleyicisi. Kullan ambalaj tüm bu widget'ları düzenlemek ve görsel çekicilik için uygun dolguyu eklemek için yönetici.
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
Bir yöntem tanımlayın, giriş yapmak(). Kullan elde etmek() kütüphaneci tarafından girilen kimlik bilgilerinin değerini çıkarmak için giriş pencere öğesindeki yöntem. Kütüphaneciler listesini yineleyin ve kullanıcı adı ve parolanın girilen değerlerle eşleşip eşleşmediğini kontrol edin. Evet ise, baştan sona girilen değerleri silin. Oluşturduğunuz tüm widget'ları yok edin ve book_management_screen() kitap ödünç alma sisteminin yönetim ekranını görüntüleme yöntemi.
Aksi takdirde, oturum açma kimlik bilgileri yanlıştır veya kütüphaneci kaydolmamıştır. Tkinter'ın mesaj kutusu parçacığı aracılığıyla uygun mesajı görüntüleyin. Eğer istersen şifrenizi şifreleyin, bcrypt modülünü kurun.
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.")
Bir yöntem tanımlayın, kayıt olmak(). Kütüphanecinin girdiği kimlik bilgilerinin değerini çıkarın, bunları kütüphanecinin listesine ekleyin ve girişleri tamamen silin.
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)
Bir yöntem tanımlayın, book_management_screen(). adlı dört etiket oluşturun. add_book_label, iade_kitap_etiketi, kitap_etiketini kaldır, Ve sayı_kitap_etiketi. Bu etiketlere karşılık gelen dört giriş ve dört düğme ve durumlarıyla birlikte tüm kitapların listesini görüntülemek için başka bir düğme oluşturun. Öğeleri düzenlemek ve biraz dolgu eklemek için paket yöneticisini kullanın.
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)
Kitap Ödünç Alma Sisteminin İşlevselliğinin Oluşturulması
Bir yöntem tanımlayın, kitap ekle(). Giriş widget'ının içeriğini çıkarın ve onu kitaplar listesine ekleyin. Kayıt sözlüğünde, anahtarı kitabın başlığı olarak ve değeri şu şekilde ekleyin: katma. Programın kitabı başarıyla eklediğini bildiren bir başarı mesaj kutusu görüntüleyin. İçeriğini temizle add_book_entry başından sonuna kadar.
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)
Bir yöntem tanımlayın, kitap_kaldır(). Kitabın başlığını çıkarın ve içinde olup olmadığını kontrol edin. kitabın liste. Varsa, onu ve kaydını sözlükten kaldırın. Bittiğinde, programın kitabı kaldırdığını bildiren bir başarı mesaj kutusu görüntüleyin. Aksi takdirde, kitabın bulunamadığını belirten bir hata mesajı kutusu görüntüleyin. girişini temizle kitap_girişini kaldır tamamen.
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)
Bir yöntem tanımlayın, sayı_kitap(). Kitabın başlığını çıkarın ve içinde var olup olmadığını kontrol edin. kitabın liste. Evet ise, bunu şuraya ekleyin: ödünç_listesi listeleyin ve kitaplar listesinden çıkarın. Kitabın değerini şu şekilde güncelleyin: Veriliş. Aksi takdirde, kitabın bulunamadığını belirten bir hata mesajı kutusu görüntüleyin. İçindekileri temizle 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)
Bir yöntem tanımlayın, kitaba dön(). Başlığı çıkarın ve içinde var olup olmadığını kontrol edin. ödünç_listesi liste. Evet ise, kaldırın ve kitap listesine geri ekleyin ve kayıttaki değeri döndürüldüğü şekilde güncelleyin. Kişinin kitabı iade ettiğini belirten bir başarı mesaj kutusu görüntüleyin.
Kitap listesinde başlık varsa ve kaydın durumu şu şekildeyse: katma, kimsenin kitabı vermediği için kişinin kitabı iade edemeyeceğini söyleyen bir hata mesajı kutusu görüntüleyin. Aksi takdirde, kitabın bulunamadığını belirten bir hata mesajı kutusu görüntüleyin.
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)
Bir yöntem tanımlayın, view_books(). Başlat İleti boş olarak değişken. Dize enterpolasyonu gerçekleştirmek ve kitapların adlarını durumlarıyla birlikte görüntülemek için mesajı oluşturun. Mesaj boşsa, kullanılabilir kitap yoktur. Karşılık gelen çıktıyı bir mesaj kutusunda görüntüleyin.
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)
Sınıfın bir örneğini oluşturun ve Tkinter'ı çalıştırın Ana döngü() pencereyi kapatana kadar olayları dinlemek için Kullanmak the __name__ == "__main__" deyim programı çalıştırmak için.
defrun(self):
self.master.mainloop()
if __name__ == "__main__":
book_borrowing_system = BookBorrowingSystem()
book_borrowing_system.run()
Kitap Ödünç Alma Sisteminin Örnek Çıktısı
Program çalıştırıldığında sizi bir kayıt/oturum açma ekranı ile karşılar. Kimlik bilgilerini girip tıkladığınızda Kayıt olmak düğmesi, program sizi bir kütüphaneci olarak ekler. Aynı kimlik bilgilerini girme ve vurma Giriş yapmak sizi yönetim ekranına yönlendirecektir.
Kitabın adını girip Kitap Ekle'ye bastığınızda, program kitabı başarıyla eklediğine dair bir mesaj kutusu görüntüler. Sorun, iade veya kaldır düğmesine tıklarsanız, program durumu güncellerken uygun mesaj kutusunu görüntüler.
tıklayınca Kitapları Görüntüle düğmesi, program durumlarıyla birlikte kitapların adını görüntüler. Bir kitabı kaldırırsanız, program başlığı siler ve onu görüntüleyemezsiniz.
Bir kitabı düzenlemeden iade etmeye çalışırsanız veya verilirken kitabı kaldırırsanız, program bir hata mesajı kutusu görüntüler.
Kitap Ödünç Alma Uygulamasını Geliştirme
Bu uygulama, güvenli bir üretim düzeyinde GUI uygulaması oluşturmak için bir temeldir. Kullanarak giriş doğrulama uygulayarak işlevselliğini artırabilirsiniz. hashlib parolaları depolamak, uygun hata işlemeyi uygulamak ve bir veritabanıyla veri kalıcılığı eklemek.
Bunun dışında, okuyucular, kütüphaneciler ve yöneticiler için farklı erişim seviyelerine sahip kullanıcı kimlik doğrulama seviyeleri uygulamanız gerekir. Kitapları aramak ve erişimi kolaylaştırmak için arama işlevi ekleyebilirsiniz.