例题要求:将图书馆管理系统改为和图像化界面相关的内容,需包含函数、GUI界面知识,将图书馆管理系统改为和图像化界面相关的内容,比如将所有的函数和相关按钮进行绑定以及给出相应的输入框,将增删改查后的信息打印在控制台。
步骤:
思路:
把本例题代码分为俩个部分一个为定义相关功能的函数部分(如增加图书add_book()函数)另一个为GUI界面部分,这样思路清晰每个相关函数功能更容易体现
最后效果图
(1)GUI界面
1.窗口的搭建
对于开始我们先简单创建一个空窗口,并设置窗口大小等属性
import tkinter as tk
from tkinter import messagebox
root = tk.Tk()
root.title("图书馆管理系统")
root.geometry("280x400")
2.输入框和标签
我们需要创建一个标签(tk.Label
)用于显示“书名”文本,定义网络布局的位置,在创建一个输入框(tk.Entry
),用于用户输入书名,定义输入框的布局。同理作者的标签和输入框也这样建立
# 创建输入框和标签
title_label = tk.Label(root, text="书名")
title_label.grid(row=0, column=0)
title_entry = tk.Entry(root)
title_entry.grid(row=0, column=1)
author_label = tk.Label(root, text="作者")
author_label.grid(row=1, column=0)
author_entry = tk.Entry(root)
author_entry.grid(row=1, column=1)
3.按钮和函数的联动
在创建按钮之前我们先要建立一个空列表,我用这个空列表用于储存和应用于整个代码。
books = []
我需要建立五个按钮并对于不同的功能,当然为了美观还要定义按钮背景和位置
tk.Button(root, text="添加图书",bg="pink", command=add_book).grid(row=2, column=0)
tk.Button(root, text="删除图书",bg="pink", command=remove_book).grid(row=2, column=1)
tk.Button(root, text="修改图书",bg="pink", command=update_book).grid(row=2, column=2)
tk.Button(root, text="借出图书",bg="pink", command=check_out_book).grid(row=3, column=0)
tk.Button(root, text="归还图书",bg="pink", command=return_book).grid(row=3, column=2)
(1)函数部分
1.添加图书
定义add_book函数用于添加图书,用e1.get()方法赋值给title和author,用append函数用于创建列表的内容和状态 代码如下
def add_book():
title = title_entry.get()
author = author_entry.get()
if title and author:
books.append({"title": title, "author": author, "available": True})
update_list()
2.删除图书
删除函数的时候我们需要用index获得相关索引,用curselection()返回选中项的相关索引
def remove_book():
selected = book_listbox.curselection()
if selected:
index = selected[0]
books.pop(index)
update_list()
3.修改图书借出归还
修改和前面大体基本一致,值得注意的是这里获取的索引是新的书名和作者,然后在更新书的信息
def update_book():
selected = book_listbox.curselection()
if selected:
index = selected[0]
title = title_entry.get()#获取新的书名的作者
author = author_entry.get()
if title and author:
books[index] = {"title": title, "author": author, "available": books[index]["available"]}
update_list()
5.更新图书
和上面不同的是这里需要用for循环遍历books列表中没音本书,然后检查书籍的状态时刻保持插入的信息状态是最新的
在做项目中思维是最重要的,清晰的解题思路会方便很多,解题的时候要把复杂的东西简单化
全部代码
import tkinter as tk
from tkinter import messagebox
# 假设的图书数据库列表
books = []
# 图书增删改查和借还的函数
def add_book():
title = title_entry.get()
author = author_entry.get()
if title and author:
books.append({"title": title, "author": author, "available": True})
update_list()
#删除书籍
def remove_book():
selected = book_listbox.curselection()
if selected:
index = selected[0]
books.pop(index)
update_list()
#修改书籍
def update_book():
selected = book_listbox.curselection()
if selected:
index = selected[0]
title = title_entry.get()#获取新的书名的作者
author = author_entry.get()
if title and author:
books[index] = {"title": title, "author": author, "available": books[index]["available"]}
update_list()
#借书
def check_out_book():
selected = book_listbox.curselection()
if selected:
index = selected[0]
if books[index]["available"]:
books[index]["available"] = False
update_list()
else:
messagebox.showwarning("警告", "该书已被借出!")
#还书
def return_book():
selected = book_listbox.curselection()
if selected:
index = selected[0]
if not books[index]["available"]:
books[index]["available"] = True
update_list()
else:
messagebox.showwarning("警告", "该书尚未被借出!")
#更新书籍
def update_list():
book_listbox.delete(0, tk.END)
for book in books:
status = "可借" if book["available"] else "已借出"#用来检查是否可用
book_listbox.insert(tk.END, f"书名:{book['title']} {book['author']} - {status}")#随时插入
# 创建主窗口
root = tk.Tk()
root.title("图书馆管理系统")
root.geometry("280x400")
# 创建输入框和标签
title_label = tk.Label(root, text="书名")
title_label.grid(row=0, column=0)
title_entry = tk.Entry(root)
title_entry.grid(row=0, column=1)
author_label = tk.Label(root, text="作者")
author_label.grid(row=1, column=0)
author_entry = tk.Entry(root)
author_entry.grid(row=1, column=1)
# 创建按钮
tk.Button(root, text="添加图书",bg="pink", command=add_book).grid(row=2, column=0)
tk.Button(root, text="删除图书",bg="pink", command=remove_book).grid(row=2, column=1)
tk.Button(root, text="修改图书",bg="pink", command=update_book).grid(row=2, column=2)
tk.Button(root, text="借出图书",bg="pink", command=check_out_book).grid(row=3, column=0)
tk.Button(root, text="归还图书",bg="pink", command=return_book).grid(row=3, column=2)
# 创建列表框
book_listbox = tk.Listbox(root, height=10,width=40)
book_listbox.grid(row=4, column=0, columnspan=3)
# 更新图书列表
update_list()
root.mainloop()
标签:title,GUI,author,book,tk,root,管理系统,图书,row
From: https://blog.csdn.net/z18768633728/article/details/142325775