'''一个图书管理系统,能够实现增加书籍,删除书籍,
修改书籍和查看图书详情,基于mysql数据库和
wxPython'''
import wx
from book import *
from dbhelper import *
__metaclass__ = type
class AddFrame(wx.Frame):
'''添加书籍弹出的小窗口'''
def __init__(self, parent, title):
'''初始化该小窗口的布局'''
self.mainframe = parent
#生成一个300*300的框
wx.Frame.__init__(self, parent, title = title, size = (400, 250))
self.panel = wx.Panel(self, pos = (0, 0), size = (400, 250))
self.panel.SetBackgroundColour("#FFFFFF") #背景为白色
#三个编辑框,分别用来编辑书名,作者,书籍相关信息
bookName_tip = wx.StaticText(self.panel, label = "书名:", pos = (5, 8), size = (35, 25))
bookName_tip.SetBackgroundColour("#FFFFFF")
bookName_text = wx.TextCtrl(self.panel, pos = (40, 5), size = (340, 25))
self.name = bookName_text
author_tip = wx.StaticText(self.panel, label = "作者:", pos = (5, 38), size = (35, 25))
author_tip.SetBackgroundColour("#FFFFFF")
author_text = wx.TextCtrl(self.panel, pos = (40, 35), size = (340, 25))
self.author = author_text
content_tip = wx.StaticText(self.panel, label = "内容:", pos = (5, 68), size = (340, 25))
content_tip.SetBackgroundColour("#FFFFFF")
content_text = wx.TextCtrl(self.panel, pos = (40, 65), size = (340, 100), style = wx.TE_MULTILINE)
self.content = content_text
save_button = wx.Button(self.panel, label = "保存书籍", pos = (160, 170))
self.Bind(wx.EVT_BUTTON, self.saveBook, save_button)
#需要用到的数据库接口
self.dbhelper = DBHelper()
def saveBook(self, evt):
'''第一步:获取text中文本;第二步,连接数据库;第三步插入并获得主键;第四步添加到ListCtrl中'''
bookName = self.name.GetValue()
author = self.author.GetValue()
content = self.content.GetValue()
print("书名:"+bookName)
if bookName == "" or author == "" or content == "":
print("进来了")
warn = wx.MessageDialog(self, message = "所有信息不能为空!!!", caption = "错误警告", style = wx.YES_DEFAULT | wx.ICON_ERROR)
warn.ShowModal() #提示错误
warn.Destroy()
return
else:
print("开始插入到数据库中")
book = Book(bookName, author, content)
book_id = self.dbhelper.insertBook(book)
self.mainframe.addToList(book_id, book)
self.Destroy()
class UpdateFrame(wx.Frame):
def __init__(self, parent, title, select_id):
'''初始化更新图书信息界面总布局'''
wx.Frame(parent, title = title, size = (400, 250))
#用来调用父frame,便于更新
self.mainframe = parent
#生成一个300*300的框
wx.Frame.__init__(self, parent, title = title, size = (400, 250))
self.panel = wx.Panel(self, pos = (0, 0), size = (400, 250))
self.panel.SetBackgroundColour("#FFFFFF") #背景为白色
#三个编辑框,分别用来编辑书名,作者,书籍相关信息
bookName_tip = wx.StaticText(self.panel, label = "书名:", pos = (5, 8), size = (35, 25))
bookName_tip.SetBackgroundColour("#FFFFFF")
bookName_text = wx.TextCtrl(self.panel, pos = (40, 5), size = (340, 25))
self.name = bookName_text
author_tip = wx.StaticText(self.panel, label = "作者:", pos = (5, 38), size = (35, 25))
author_tip.SetBackgroundColour("#FFFFFF")
author_text = wx.TextCtrl(self.panel, pos = (40, 35), size = (340, 25))
self.author = author_text
content_tip = wx.StaticText(self.panel, label = "内容:", pos = (5, 68), size = (340, 25))
content_tip.SetBackgroundColour("#FFFFFF")
content_text = wx.TextCtrl(self.panel, pos = (40, 65), size = (340, 100), style = wx.TE_MULTILINE)
self.content = content_text
save_button = wx.Button(self.panel, label = "保存修改", pos = (160, 170))
self.Bind(wx.EVT_BUTTON, self.saveUpdate, save_button)
#选中的id和bookid
self.select_id = select_id
self.bookid = self.mainframe.list.GetItem(select_id, 0).Text #获取第select_id行的第0列的值
print(select_id, self.bookid)
#需要用到的数据库接口
self.dbhelper = DBHelper()
self.showAllText() #展现所有的text原来取值
def showAllText(self):
'''显示概述本原始信息'''
data = self.dbhelper.getBookById(self.bookid) #通过id获取书本信息
self.name.SetValue(data[0]) #设置值
self.author.SetValue(data[1])
self.content.SetValue(data[2])
def saveUpdate(self, evt):
'''保存修改后的值'''
bookName = self.name.GetValue() #获得修改后的值
author = self.author.GetValue()
content = self.content.GetValue()
print("书名:"+bookName)
if bookName == "" or author == "" or content == "":
print("进来了")
warn = wx.MessageDialog(self, message = "所有信息不能为空!!!", caption = "错误警告", style = wx.YES_DEFAULT | wx.ICON_ERROR)
warn.ShowModal() #提示错误
warn.Destroy()
return
else:
print("开始将修改后的数据保存到数据库中")
book = Book(bookName, author, content) #将数据封装到book对象中
self.dbhelper.saveUpdate(self.bookid, book)
self.mainframe.list.SetItem(self.select_id, 1, bookName)
self.Destroy() #修改完后自动销毁
class ShowFrame(wx.Frame):
'''用来显示书籍的信息'''
def __init__(self, parent, title, select_id):
'''初始化该小窗口的布局'''
#便于调用父窗口
self.mainframe = parent
#生成一个300*300的框
wx.Frame.__init__(self, parent, title = title, size = (400, 250))
self.panel = wx.Panel(self, pos = (0, 0), size = (400, 250))
self.panel.SetBackgroundColour("#FFFFFF") #背景为白色
#三个编辑框,分别用来编辑书名,作者,书籍相关信息
bookName_tip = wx.StaticText(self.panel, label = "书名:", pos = (5, 8), size = (35, 25))
bookName_tip.SetBackgroundColour("#FFFFFF")
bookName_text = wx.TextCtrl(self.panel, pos = (40, 5), size = (340, 25))
bookName_text.SetEditable(False)
self.name = bookName_text
author_tip = wx.StaticText(self.panel, label = "作者:", pos = (5, 38), size = (35, 25))
author_tip.SetBackgroundColour("#FFFFFF")
author_text = wx.TextCtrl(self.panel, pos = (40, 35), size = (340, 25))
author_text.SetEditable(False)
self.author = author_text
content_tip = wx.StaticText(self.panel, label = "内容:", pos = (5, 68), size = (340, 25))
content_tip.SetBackgroundColour("#FFFFFF")
content_text = wx.TextCtrl(self.panel, pos = (40, 65), size = (340, 100), style = wx.TE_MULTILINE)
content_text.SetEditable(False)
self.content = content_text
#选中的id和bookid
self.select_id = select_id
self.bookid = self.mainframe.list.GetItem(select_id, 0).Text #获取第select_id行的第0列的值
#需要用到的数据库接口
self.dbhelper = DBHelper()
self.showAllText() #展现所有的text原来取值
def showAllText(self):
'''显示概述本原始信息'''
data = self.dbhelper.getBookById(self.bookid) #通过id获取书本信息
self.name.SetValue(data[0]) #设置值
self.author.SetValue(data[1])
self.content.SetValue(data[2])
class LibraryFrame(wx.Frame):
def __init__(self, parent, title):
'''初始化系统总体布局,包括各种控件'''
#生成一个宽为400,高为400的frame框
wx.Frame.__init__(self, parent, title=title, size=(400,
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
图书管理系统mysql+wxpython.rar (14个子文件)
book.sql 1KB
library
listctrl_test.py 2KB
dbhelper.py 3KB
book.py 1KB
.idea
misc.xml 298B
workspace.xml 12KB
library.iml 408B
encodings.xml 138B
modules.xml 273B
library_system.py 12KB
__pycache__
book.cpython-37.pyc 2KB
dbhelper.cpython-36.pyc 3KB
book.cpython-36.pyc 2KB
dbhelper.cpython-37.pyc 3KB
共 14 条
- 1
资源评论
- 蕊9152023-05-21报错:pymysql.err.OperationalError: (1049, "Unknown database 'library'") 不知道改怎么解决
水常东柳
- 粉丝: 4
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功