Project 2 Library Book Management System
from tkinter import *
import tkinter.messagebox
import LibBkDatabase4
class Library:
def __init__(self,root):
self.root = root
self.root.title('Library Database Management System')
self.root.geometry('1350x750+0+0')
BOOK_TITLE = StringVar()
AUTHOR = StringVar()
YEAR = StringVar()
ISBN = StringVar()
#============================================Functions==============================================
def iExit():
iExit = tkinter.messagebox.askyesno('Library Database Management System','Confirm if you want to exit')
if iExit > 0:
root.destroy()
return
def ClearData():
self.txtBookTitle.delete(0,END)
self.txtAuthor.delete(0,END)
self.txtYear.delete(0,END)
self.txtISBN.delete(0,END)
def addBook():
if (len(BOOK_TITLE.get()) != 0):
LibBkDatabase4.addBookRecord(BOOK_TITLE.get(), AUTHOR.get(), YEAR.get(), ISBN.get())
booklist.delete(0,END)
booklist.insert(END, (BOOK_TITLE.get(), AUTHOR.get(), YEAR.get(), ISBN.get()))
def DisplayData():
booklist.delete(0,END)
for row in LibBkDatabase4.view():
booklist.insert(END,row)
def SelectBook(event):
global sb
searchBk = booklist.curselection() [0]
sb = booklist.get(searchBk)
self.txtBookTitle.delete(0,END)
self.txtBookTitle.insert(END,sb[1])
self.txtAuthor.delete(0,END)
elf.txtAuthor.insert(END,sb[2])
self.txtYear.delete(0,END)
elf.txtYear.insert(END,sb[3])
self.txtISBN.delete(0,END)
elf.txtISBN.insert(END,sb[4])
def DeleteData():
if (len(BOOK_TITLE.get()) != 0):
LibBkDatabase4.deleteRec(sb[0])
ClearData()
DisplayData()
#============================================Frames==============================================
MainFrame = Frame(self.root)
MainFrame.grid()
TitleFrame = Frame(MainFrame, bd=2, padx=40,pady=8, bg='Cadet blue', relief=RIDGE)
TitleFrame.pack(side=TOP)
self.lbtitle = Label(TitleFrame, font=('arial',46,'bold'), text='Library Book Management System')
self.lbtitle.grid(sticky=W)
ButtonFrame = Frame(MainFrame, bd=2, width=1350, height=100,padx=20,pady=20, bg='Cadet blue', relief=RIDGE)
ButtonFrame.pack(side=BOTTOM)
FrameDetail = Frame(MainFrame, bd=0, width=1350, height=50,padx=20, relief=RIDGE)
FrameDetail.pack(side=BOTTOM)
DataFrame = Frame(MainFrame, bd=1, width=1300, height=400,padx=20,pady=20, relief=RIDGE)
DataFrame.pack(side=BOTTOM)
DataFrameLeft = LabelFrame(DataFrame, bd=1, width=800, height=300, padx=20, relief=RIDGE,
font=('arial',12,'bold'), text='Library Book Info',bg='Cadet blue')
DataFrameLeft.pack(side=LEFT)
DataFrameRight = LabelFrame(DataFrame, bd=1, width=450, height=300, padx=20,pady=4, relief=RIDGE,
font=('arial',12,'bold'), text='Book Details',bg='Cadet blue')
DataFrameRight.pack(side=RIGHT)
#============================================Label and Entry==============================================
self.lbBookTitle = Label(DataFrameLeft,font=('arial',12,'bold'),text='Book Title',padx=20,pady=20,
bg='Cadet blue')
self.lbBookTitle.grid(row=0,column=0,sticky=W)
self.txtBookTitle = Entry(DataFrameLeft,font=('arial',12,'bold'), textvariable=BOOK_TITLE,width=25)
self.txtBookTitle.grid(row=0,column=1)
self.lbAuthor = Label(DataFrameLeft,font=('arial',12,'bold'),text='Author',padx=20,pady=20,
bg='Cadet blue')
self.lbAuthor.grid(row=1,column=0,sticky=W)
self.txtAuthor = Entry(DataFrameLeft,font=('arial',12,'bold'), textvariable=AUTHOR,width=25)
self.txtAuthor.grid(row=1,column=1)
self.lbYear = Label(DataFrameLeft,font=('arial',12,'bold'),text='Year of publication',padx=20,pady=20,
bg='Cadet blue')
self.lbYear.grid(row=2,column=0,sticky=W)
self.txtYear = Entry(DataFrameLeft,font=('arial',12,'bold'), textvariable=YEAR,width=25)
self.txtYear.grid(row=2,column=1)
self.lbISBN = Label(DataFrameLeft,font=('arial',12,'bold'),text='ISBN',padx=20,pady=20,
bg='Cadet blue')
self.lbISBN.grid(row=3,column=0,sticky=W)
self.txtISBN = Entry(DataFrameLeft,font=('arial',12,'bold'), textvariable=ISBN,width=25)
self.txtISBN.grid(row=3,column=1)
#============================================Listbox and Scrollbar====================================
scrollbar = Scrollbar(DataFrameRight)
scrollbar.grid(row=0,column=1,sticky='ns')
booklist = Listbox(DataFrameRight, width=45, height=12, font=('arial',12,'bold'),yscrollcommand=scrollbar.set)
booklist.bind('<<ListboxSelect>>', SelectBook)
booklist.grid(row=0,column=0,sticky='ns')
scrollbar.config(command=booklist.yview)
#============================================Buttons Widgets====================================
self.btnAddData = Button(ButtonFrame, text='Add a book', font=('arial',14,'bold'), height=2,
width=17, bd=4,command=addBook)
self.btnAddData.grid(row=0,column=0)
self.btnDisplayData = Button(ButtonFrame, text='Display all the records', font=('arial',14,'bold'), height=2,
width=17, bd=4,command=DisplayData)
self.btnDisplayData.grid(row=0,column=1)
self.btnClearData = Button(ButtonFrame, text='Clear Data', font=('arial',14,'bold'), height=2,
width=17, bd=4,command=ClearData)
self.btnClearData.grid(row=0,column=2)
self.btnSearchData = Button(ButtonFrame, text='Search a book', font=('arial',14,'bold'), height=2,
width=17, bd=4,command=SelectBook)
self.btnSearchData.grid(row=0,column=3)
self.btnIssueData = Button(ButtonFrame, text='Issue a book', font=('arial',14,'bold'), height=2,
width=17, bd=4)
self.btnIssueData.grid(row=0,column=4)
self.btnDeleteData = Button(ButtonFrame, text='Delete a book', font=('arial',14,'bold'), height=2,
width=17, bd=4, command = DeleteData)
self.btnDeleteData.grid(row=0,column=5)
self.btnExitData = Button(ButtonFrame, text='Exit', font=('arial',14,'bold'), height=2,
width=17, bd=4, command=iExit)
self.btnExitData.grid(row=0,column=6)
if __name__=='__main__':
root = Tk()
app = Library(root)
root.mainloop()