当前位置: 首页 > news >正文

【Python】——使用python实现GUI图书管理系统:Tkinter+SQLite实战

        本文将通过一个完整的python项目——图书管理系统,演示如何利用Tkinter构建GUI 界面,结合SQLite数据库实现增删改查功能。代码简洁易懂,适合python初学者学习和二次开发。

一、项目功能概览

  1. 图书管理:添加、查看、修改、删除图书信息
  2. 数据存储:使用SQLite持久化存储图书数据
  3. 可视化界面:表格展示数据,支持快速选择和编辑
  4. 输入校验:关键字段非空校验与操作确认提示

二、技术栈与依赖库


import tkinter as tk
from tkinter import ttk, messagebox
import sqlite3
  • Tkinter:Python标准GUI库,快速构建窗口应用
  • SQLite:轻量级嵌入式数据库,无需额外配置
  • Treeview:表格组件,支持数据多列展示

三、核心代码解析

1. 数据库设计
def create_table(self):
    cursor = self.conn.cursor()
    cursor.execute('''CREATE TABLE IF NOT EXISTS books
                      (id INTEGER PRIMARY KEY,
                       title TEXT NOT NULL,
                       author TEXT NOT NULL,
                       year INTEGER)''')
    self.conn.commit()
  • 创建books表,包含ID(主键)、书名、作者、出版年份字段
  • 使用IF NOT EXISTS避免重复建表
2. GUI界面布局

采用网格布局划分功能区域:

  • 输入区LabelFrame包含书名、作者、年份的输入框
  • 操作区:四个功能按钮(添加/显示/修改/删除)
  • 展示区Treeview表格+滚动条显示图书列表
3. 关键功能实现

添加图书(完整输入校验):

def add_book(self):
    title = self.title_entry.get()
    author = self.author_entry.get()
    year = self.year_entry.get()
    if title and author and year:
        cursor = self.conn.cursor()
        cursor.execute("INSERT INTO books VALUES (NULL,?,?,?)", 
                      (title, author, year))
        self.conn.commit()
        messagebox.showinfo("成功", "图书添加成功!")
        self.show_books()  # 刷新表格

数据绑定(点击表格自动填充输入框):

def on_tree_select(self, event):
    selected_items = self.tree.selection()
    if selected_items:
        item = selected_items[0]
        values = self.tree.item(item)['values']
        # 将选中数据回填至输入框
        self.title_entry.insert(0, values[1])
        self.author_entry.insert(0, values[2])
        self.year_entry.insert(0, values[3])

四、运行与使用

  1. 启动系统:执行python book_management.py
  2. 操作流程
    • 添加图书:填写信息 → 点击"添加图书"
    • 修改记录:选中表格行 → 编辑信息 → 点击"修改图书"
    • 删除记录:选中行 → 点击"删除图书" → 确认

 运行效果:

相关文章:

  • 大模型工程师学习日记(十):基于 LangChain 构建向量存储和查询 Qdrant
  • LearnOpenGL——高级光照(中)
  • Kali CentOs 7代理
  • 【JavaEE】-- 多线程(初阶)4
  • 投入与专注
  • 【Pandas】pandas Series replace
  • 【Python/Pytorch】-- 创建3090Ti显卡所需环境
  • 【芯片设计】AI芯片前端设计工程师面试记录·20250303
  • Django:文件上传时报错in a frame because it set ‘X-Frame-Options‘ to ‘deny‘.
  • 魔百盒CM311-1a_YST_晶晨S905L3A芯片_2+8G_安卓9.0_免拆卡刷固件包
  • 不同类型光谱相机的技术差异比较
  • WPF-Avalonia-ReactiveUI-路由实践
  • 【商城实战(1)】启航:从0到1搭建电商帝国的第一步
  • Rust编程实战:Rust实现简单的Web服务,单线程性能问题
  • 第八篇《九变篇》
  • android13打基础: 控件alertdialog
  • 电子电气架构 --- 拓扑架构集中的趋势及其演变
  • Linux12-TCP\HTTP
  • e2studio开发RA2E1(18)----看门狗WDT
  • SEO新手操作实战精要
  • 西宁做网站的公司bj君博沟通/ip软件点击百度竞价推广
  • 学院 网站 两学一做/seo管理工具
  • 想做个网站报价蔬菜价格怎么做/重庆网站关键词排名
  • 政府机关网站建设的依据/通过百度指数不能判断出
  • 深圳彩票网站建设/品牌网站建设
  • 网络媒体整合营销/seox