基于Tkinter的图书管理系统

本文介绍了如何使用Python的Tkinter库开发一个包含书籍信息添加、修改和保存功能的图书管理系统,通过事件监听和各种控件操作展示了GUI编程的基本应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于Tkinter的图书管理系统

概述

虽然Python的强项在人工智能,数据处理方面,但是对于日常简单的应用,Python也提供了非常友好的支持(如:Tkinter),本文主要为基于Tkinter的图书管理系统,包括书籍信息的添加、修改、保存功能。

设计思路

1.页面布局:主要分为上下两部分 a. 书籍信息展示区域b. 书本管理区域
2.事件监听:通过给功能按钮绑定事件,来实现不同的功能,如:添加书本信息、修改书本信息等功能。

涉及知识点

  1. 开发工具:Python3.8 , PyCharm2022
  2. Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。
  3. TreeView控件是用来展示树形结构或列表结构的一个UI控件;第一列用来表示树状结构,除第一列外后面几列的是列表结构。
  4. Button按钮控件是一个标准的tkinter控件。按钮上可以显示文字或者图片作为提示信息。文字只能使用一种字体以及颜色。按钮的最主要作用是被点击后,可以调用指定的回调函数,完成特定的功能。比如,关闭窗口、执行命令等。
  5. Label控件,用来显示指定的窗口中的文本和图像。

核心代码

绘制页面

def place_tree(self):
    columns = ['no', 'name', 'author', 'publisher', 'price', 'abstract']
    text_arr = ['编号', '书名', '作者', '出版社', '价格', '摘要']
    self.tree = ttk.Treeview(window, show="headings", columns=columns)
    for i in range(len(columns)):
        self.tree.heading(columns[i], text=text_arr[i])
        self.tree.column(columns[i], width=150, anchor='center')
    self.tree.place(x=0, y=0, width=900, height=300)
    for bool_val in self.book_val_arr:
        self.tree.insert('', 'end', values=bool_val)

    for i in range(len(columns)):
        val = tk.Variable()
        self.val_arr.append(val)
        tk.Label(window, text=text_arr[i], bg='#b2baa4', fg='#ffffff', padx=5, pady=4).place(x=20, y=320 + i * 35)
        tk.Entry(window, textvariable=self.val_arr[i], bg='#f7f8f6').place(x=80, y=320 + i * 35)

    tk.Button(window, text='添加书本', command=self.add_book).place(x=80, y=540, width=120)

    self.edit_val_arr = []
    for i in range(len(columns)):
        val = tk.Variable()
        self.edit_val_arr.append(val)
        tk.Label(window, text=text_arr[i], bg='#e7cdc1', fg='#ffffff', padx=5, pady=4).place(x=320, y=320 + i * 35)
        tk.Entry(window, textvariable=self.edit_val_arr[i], bg='#f9f2f0').place(x=380, y=320 + i * 35)

    tk.Button(window, text='修改书本', command=self.edit_book).place(x=380, y=540, width=120)
    self.tree.bind('<<TreeviewSelect>>', self.treeview_select)

    tk.Button(window, text='保存当前书本信息', command=self.save_pkl).place(x=660, y=540, width=120)

添加书籍信息事件

def add_book(self):
    values = []
    for val in self.val_arr:
        v = val.get()
        if v == '':
            messagebox.showinfo('提示', '请输入内容')
            return
        values.append(v)
    for book in self.tree.get_children():
        no = self.tree.item(book)['values'][0]
        if no == values[0]:
            messagebox.showinfo('提示', '编号已经存在')
            return
    self.tree.insert('', 'end', values=values)
    for val in self.val_arr:
        val.set('')

编辑书籍信息事件

def edit_book(self):
    values = []
    for val in self.edit_val_arr:
        v = val.get()
        if v == '':
            messagebox.showinfo('提示', '请输入内容')
            return
        values.append(v)
    self.tree.item(self.tree.selection()[0], values=values)

保存书籍信息事件

def save_pkl(self):
    f = open('data.pkl', 'wb')
    book_val_arr = []
    for book in self.tree.get_children():
        book_val = self.tree.item(book)['values']
        book_val_arr.append(book_val)
    pickle.dump(book_val_arr, f)
    f.close()

读取书籍记录函数

def read_pkl():
    if os.path.exists('data.pkl'):
        f = open('data.pkl', 'rb')
        book_val_arr = pickle.load(f)
        f.close()
        return book_val_arr
    else:
        return []

运行界面

初始界面
在这里插入图片描述
添加书籍
在这里插入图片描述

修改书籍

在这里插入图片描述
在这里插入图片描述

未输入内容时添加书本
在这里插入图片描述

保存书本信息
在这里插入图片描述

重启显示更新后的书本信息
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值