Challenge

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()

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.