IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Python+tkinter库实现简单图书管理系统 -> 正文阅读

[大数据]Python+tkinter库实现简单图书管理系统


前言

使用mysql数据库存储数据,使用python中tkinter库建立一个简单的图书管理系统


提示:以下是本篇文章正文内容,下面案例可供参考

一、MySQL是什么?

MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,增加了速度并提高了灵活性。

  • MySQL的使用教程
    https://www.runoob.com/mysql/mysql-tutorial.html

二、Tkinter库

Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。

由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于小白而言,搭建一个简单的图形界面 Tkinter 还是一个不错的选择。

  • Tkinterl的使用教程
    https://www.runoob.com/python/python-gui-tkinter.html

三、Code步骤

1.引入库

import tkinter as tk
import tkinter.ttk as ttk
from pymysql import connect
from tkinter.messagebox import showinfo
from tkinter.constants import END, N, SINGLE

2.使用tkinter搭建系统

代码如下(示例):

#主窗口
root=tk.Tk()
root.title("YU_book_manage_system")
root.geometry("750x500+100+100")


#菜单
menubar=tk.Menu(root)
filemenu=tk.Menu(menubar,tearoff=0)
menubar.add_cascade(label="菜单",menu=filemenu)
filemenu.add_command(label="打开")
filemenu.add_command(label="保存")
filemenu.add_command(label="退出",command=root.destroy)
root.config(menu=menubar)

#面板&框架
pw=tk.PanedWindow(root,orient="vertical",sashrelief="sunken")
pw.pack(fill="both",expand=1)

pw1=tk.PanedWindow(pw,orient="horizontal",sashrelief="sunken")
pw2=tk.PanedWindow(pw,orient="horizontal",sashrelief="sunken")
top_frame,left_frame,mid_frame,right_frame=ttk.Frame(pw1,height=125,relief="flat"),\
                                           ttk.Frame(pw2,relief="sunken"),\
                                           ttk.Frame(pw2,relief="raised"),\
                                           ttk.Frame(pw2,relief="ridge")
        
pw.add(pw1),pw.add(pw2),pw1.add(top_frame),pw2.add(left_frame),pw2.add(mid_frame),pw2.add(right_frame)

labelframe=tk.LabelFrame(left_frame,text="图书信息",font=("迷你简魏碑",16),labelanchor=N)
ttk.Label(labelframe,text=("编号","图书名称","图书作者","出版日期","图书数量"),font=("华文行楷",11),anchor="n").pack()

#列表框&滚动条
scrollbar=ttk.Scrollbar(labelframe)
listbox=tk.Listbox(labelframe,width=60,font=("黑体",11),height=20,yscrollcommand=scrollbar,selectmode=SINGLE)
listbox.select_set(0)
#链接滚动条&列表框
scrollbar.config(command=listbox.yview)

labelframe.pack(expand=0),scrollbar.pack(side="right",fill="y",pady=2),listbox.pack(side="left",pady=2)

#初始listbox
show_book()

#填充文本&输入框
ttk.Label(top_frame,text="图书管理系统",font=("方正字迹-吕建德行楷繁体",25)).pack(pady=30)
ttk.Label(mid_frame,text="图书编号",font=("黑体",10)).place(x=0,y=55)
ttk.Label(mid_frame,text="图书名称",font=("黑体",10)).place(x=0,y=120)
ttk.Label(mid_frame,text="图书作者",font=("黑体",10)).place(x=0,y=185)
ttk.Label(mid_frame,text="出版日期",font=("黑体",10)).place(x=0,y=250)
ttk.Label(mid_frame,text="图书数量",font=("黑体",10)).place(x=0,y=315)

#entry变量
v1=tk.StringVar()
v2=tk.StringVar()
v3=tk.StringVar()
v4=tk.StringVar()
v5=tk.StringVar()

e1=ttk.Entry(mid_frame,width=16,textvariable=v1)
e2=ttk.Entry(mid_frame,width=16,textvariable=v2)
e3=ttk.Entry(mid_frame,width=16,textvariable=v3)
e4=ttk.Entry(mid_frame,width=16,textvariable=v4)
e5=ttk.Entry(mid_frame,width=16,textvariable=v5)

#单独放置(由于get方法)
e1.pack(padx=5,pady=80)
e2.place(x=5,y=145)
e3.place(x=5,y=205)
e4.place(x=5,y=270)
e5.place(x=5,y=335)

#消息发送
button1=ttk.Button(right_frame,text="查询图书",command=find_book).pack(pady=64)
button2=ttk.Button(right_frame,text="增加图书",command=add_book).pack()
button3=ttk.Button(right_frame,text="修改图书",command=mod_book).pack(pady=64)
button4=ttk.Button(right_frame,text="删除图书",command=del_book).pack()
button5=ttk.Button(mid_frame,text="写入",command=get_data).place(x=20,y=15)

root.mainloop()

图书管理界面截图


在这里插入图片描述

3.定义函数(发送消息,操作mysql数据库)

函数建议放在前面,代码如下(示例):

#添加图书
def add_book():
        try:
                conn=connect(host="localhost",port=3306,database="book_manage",user="root",password="yusql",charset="utf8")
                cur=conn.cursor()
                cur.execute("select *from books")
                data=cur.fetchall()
                param2=e2.get()
                param3=e3.get()
                param4=e4.get()
                param5=int(e5.get())
                for item in data:

                        if item[1]==param2 and item[2]==param3:
                                param5+=1
                                cur.execute("update books set bnumber=%s  where btitle=%s and bauthor=%s",(param5,param2,param3))
                                conn.commit()
                                show_book()
                                showinfo("窗口","图书存在,数量加一")
                                return()

                cur.execute("insert into books(btitle,bauthor,byu_date,bnumber)values(%s,%s,%s,%s)",(param2,param3,param4,param5))
                conn.commit()
                show_book()
                showinfo("窗口","添加成功")
        
        except:
                showinfo("窗口","输入格式错误")

#删除图书
def del_book():
        conn=connect(host="localhost",port=3306,database="book_manage",user="root",password="yusql",charset="utf8")
        cur=conn.cursor()
        param1=int(e1.get())
        param2=e2.get()
        param3=e3.get()
        param4=e4.get()
        param5=int(e5.get())
        if param5>1:
                param5-=1
                cur.execute("update books set id=%s,btitle=%s,bauthor=%s,byu_date=%s,bnumber=%s where btitle=%s and bauthor=%s",(param1,param2,param3,param4,param5,param2,param3))
                conn.commit()
                show_book()
                showinfo("窗口","图书存在,数量减一")
                return()       
        else:
                cur.execute("delete from books where id=%s and btitle=%s",(param1,param2))
                conn.commit()
                cur.execute("alter table books drop id")
                cur.execute("alter table books add id int(12) primary key not null auto_increment first")
                show_book()
                showinfo("窗口","删除成功")

#更新图书
def show_book():
        conn=connect(host="localhost",port=3306,database="book_manage",user="root",password="yusql",charset="utf8")
        cur=conn.cursor()
        cur.execute("select *from books")
        data=cur.fetchall()
        listbox.delete(0,END)
        for item in data:
                listbox.insert("end",item) 
        cur.close()
        conn.close()

#修改图书
def mod_book():
        try:
                conn=connect(host="localhost",port=3306,database="book_manage",user="root",password="yusql",charset="utf8")
                cur=conn.cursor()
                param1=int(e1.get())
                param2=e2.get()
                param3=e3.get()
                param4=e4.get()
                param5=int(e5.get())
                cur.execute("update books set id=%s,btitle=%s,bauthor=%s,byu_date=%s,bnumber=%s where id=%s",(param1,param2,param3,param4,param5,param1))
                conn.commit()
                show_book()
                showinfo("窗口","修改成功")
        except:
                showinfo("窗口","输入格式错误")

#查询图书
def find_book():
        try:
                conn=connect(host="localhost",port=3306,database="book_manage",user="root",password="yusql",charset="utf8")
                cur=conn.cursor()
                param=e2.get()
                cur.execute("select *from books")
                data=cur.fetchall()
                for item in data:
                        if item[1]==param:
                                showinfo("窗口",item)
                cur.close()
                conn.close()
        except:
                showinfo("窗口","无该图书")


#得到选中列表框数据
def get_data():
        value=listbox.get(listbox.curselection())
        v1.set(value[0])
        v2.set(value[1])
        v3.set(value[2])
        v4.set(value[3])
        v5.set(value[4])

总结

本文仅仅简单使用了tkinter搭建了一个简单的图书管理系统,你也可以搭建其他的信息管理系统或者对代码进行改进,添加更多的功能。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-28 11:22:04  更:2021-11-28 11:23:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:16:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码