from tkinter import *
from tkinter import messagebox
class Book:
def __init__(self, title, author, year):
self.title = title
self.author = author
self.year = year
class Library:
def __init__(self):
self.books = []
def add_book(self, book):
self.books.append(book)
def remove_book(self, book):
self.books.remove(book)
def get_books(self):
return self.books
class Window:
def __init__(self, master):
self.master = master
self.master.title("图书管理系统")
self.library = Library()
self.create_widgets()
def create_widgets(self):
# 标签
Label(self.master, text="书名").grid(row=0, column=0)
Label(self.master, text="作者").grid(row=1, column=0)
Label(self.master, text="年份").grid(row=2, column=0)
# 输入框
self.title_entry = Entry(self.master)
self.title_entry.grid(row=0, column=1)
self.author_entry = Entry(self.master)
self.author_entry.grid(row=1, column=1)
self.year_entry = Entry(self.master)
self.year_entry.grid(row=2, column=1)
# 按钮
self.add_button = Button(self.master, text="添加书籍", command=self.add_book)
self.add_button.grid(row=3, column=0, padx=10, pady=10)
self.remove_button = Button(self.master, text="删除书籍", command=self.remove_book)
self.remove_button.grid(row=3, column=1, padx=10, pady=10)
# 列表框
self.book_listbox = Listbox(self.master)
self.book_listbox.grid(row=4, column=0, columnspan=2, padx=10, pady=10)
self.refresh_books()
def add_book(self):
title = self.title_entry.get()
author = self.author_entry.get()
year = self.year_entry.get()
if not title or not author or not year:
messagebox.showerror("错误", "请填写所有字段!")
return
book = Book(title, author, year)
self.library.add_book(book)
self.refresh_books()
self.title_entry.delete(0, END)
self.author_entry.delete(0, END)
self.year_entry.delete(0, END)
def remove_book(self):
selected_books = self.book_listbox.curselection()
if not selected_books:
messagebox.showerror("错误", "请选择要删除的书籍!")
return
for i in selected_books[::-1]:
book = self.book_listbox.get(i)
self.library.remove_book(book)
self.refresh_books()
def refresh_books(self):
self.book_listbox.delete(0, END)
books = self.library.get_books()
for book in books:
self.book_listbox.insert(END, f"{book.title} - {book.author} ({book.year})")
if __name__ == '__main__':
root = Tk()
window = Window(root)
root.mainloop()