Presentation

from tkinter import *
from tkinter import ttk, messagebox
import pymysql as py
 
class LibraryManagementSystem:
    def __init__(self, root):
        self.root = root
        self.root.title("Library Management System")
        self.root.geometry("1400x700+0+0")
        self.member_var = StringVar()
        self.prn_var = StringVar()
        self.id_var = StringVar()
        self.firstname_var = StringVar()
        self.lastname_var = StringVar()
        self.address1_var = StringVar()
        self.address2_var = StringVar()
        self.postcode_var = StringVar()
        self.mobile_var = StringVar()
        self.bookid_var = StringVar()
        self.booktitle_var = StringVar()
        self.auther_var = StringVar()
        self.dateborrowed_var = StringVar()
        self.datedue_var = StringVar()
        self.daysonbook = StringVar()
        self.lateratefine_var = StringVar()
        self.dateoverdue = StringVar()
        self.finallprice = StringVar()
 
        lbltitle = Label(self.root, text="LIBRARY MANAGEMENT SYSTEM", bg="powder blue", fg="green", bd=20, relief="ridge", font=("Times New Roman", 50, "bold"), padx=2, pady=6)
        lbltitle.pack(side=TOP, fill=X)
        frame = Frame(self.root, bd=12, relief="ridge", padx=20, bg="powder blue")
        frame.place(x=0, y=130, width=1365, height=340)
 
        # DATA FRAME LEFT
        DataFrameLeft = LabelFrame(frame, text="LIBRARY MEMBERSHIP INFORMATION", bg="powder blue", fg="green", bd=12, relief="ridge", font=("Times New Roman", 12, "bold"))
        DataFrameLeft.place(x=0, y=5, width=1305, height=300)
 
        lblmember = Label(DataFrameLeft, bg="powder blue", text="MEMBER TYPE", font=("Times New Roman", 15, "bold"), padx=2, pady=6)
        lblmember.grid(row=0, column=0, sticky=W)
        comMember = ttk.Combobox(DataFrameLeft, font=("Times New Roman", 15, "bold"), width=30, textvariable=self.member_var, state="readonly")
        comMember["value"] = ("ADMIN STAFF", "STUDENT", "LECTURER")
        comMember.current(0)
        comMember.grid(row=0, column=1)
 
        lblPRN_no = Label(DataFrameLeft, font=("arial", 12, "bold"), text="PRN NO.", padx=2, pady=2, bg="powder blue")
        lblPRN_no.grid(row=1, column=0, sticky=W)
        textPRN_no = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.prn_var, width=35)
        textPRN_no.grid(row=1, column=1)
 
        lblTitle = Label(DataFrameLeft, font=("arial", 12, "bold"), text="ID NO.", padx=2, pady=2, bg="powder blue")
        lblTitle.grid(row=2, column=0, sticky=W)
        textTitle = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.id_var, width=35)
        textTitle.grid(row=2, column=1)
 
        lblFirstName = Label(DataFrameLeft, font=("arial", 12, "bold"), text="First Name", padx=2, pady=2, bg="powder blue")
        lblFirstName.grid(row=3, column=0, sticky=W)
        textFirstName = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.firstname_var, width=35)
        textFirstName.grid(row=3, column=1)
 
        lblLastName = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Last Name", padx=2, pady=2, bg="powder blue")
        lblLastName.grid(row=4, column=0, sticky=W)
        textLastName = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.lastname_var, width=35)
        textLastName.grid(row=4, column=1)
 
        lblAddress1 = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Address 1", padx=2, pady=2, bg="powder blue")
        lblAddress1.grid(row=5, column=0, sticky=W)
        textAddress1 = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.address1_var, width=35)
        textAddress1.grid(row=5, column=1)
 
        lblAddress2 = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Address 2", padx=2, pady=2, bg="powder blue")
        lblAddress2.grid(row=6, column=0, sticky=W)
        textAddress2 = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.address2_var, width=35)
        textAddress2.grid(row=6, column=1)
 
        lblPostcode = Label(DataFrameLeft, font=("arial", 12, "bold"), text=" Post Code", padx=2, pady=2, bg="powder blue")
        lblPostcode.grid(row=7, column=0, sticky=W)
        textPostcode = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.postcode_var, width=35)
        textPostcode.grid(row=7, column=1)
 
        lblMobile = Label(DataFrameLeft, font=("arial", 12, "bold"), text=" Mobile No.", padx=2, pady=2, bg="powder blue")
        lblMobile.grid(row=8, column=0, sticky=W)
        textMobile = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.mobile_var, width=35)
        textMobile.grid(row=8, column=1)
 
        lblBookid = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Book Id.", padx=70, pady=2, bg="powder blue")
        lblBookid.grid(row=0, column=2, sticky=W)
        textBookid = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.bookid_var, width=35)
        textBookid.grid(row=0, column=3)
 
        lblBooktitle = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Book Title", padx=70, pady=2, bg="powder blue")
        lblBooktitle.grid(row=1, column=2, sticky=W)
        textBooktitle = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.booktitle_var, width=35)
        textBooktitle.grid(row=1, column=3)
 
        lblAuther = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Auther Name", padx=70, pady=2, bg="powder blue")
        lblAuther.grid(row=2, column=2, sticky=W)
        textAuther = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.auther_var, width=35)
        textAuther.grid(row=2, column=3)
 
        lblDateBorrowed = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Date Borrowed ", padx=70, pady=2, bg="powder blue")
        lblDateBorrowed.grid(row=3, column=2, sticky=W)
        textDateBorrowed = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.dateborrowed_var, width=35)
        textDateBorrowed.grid(row=3, column=3)
 
        lblDateDue = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Date Due: ", padx=70, pady=2, bg="powder blue")
        lblDateDue.grid(row=4, column=2, sticky=W)
        textDateDue = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.datedue_var, width=35)
        textDateDue.grid(row=4, column=3)
 
        lblDaysonBook = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Days on Book", padx=70, pady=2, bg="powder blue")
        lblDaysonBook.grid(row=5, column=2, sticky=W)
        textDaysonBook = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.daysonbook, width=35)
        textDaysonBook.grid(row=5, column=3)
 
        lbllateretuenfine = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Late Return Fine", padx=70, pady=2, bg="powder blue")
        lbllateretuenfine.grid(row=6, column=2, sticky=W)
        textlateretuenfine = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.lateratefine_var, width=35)
        textlateretuenfine.grid(row=6, column=3)
 
        lblDateoverDate = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Date over Date", padx=70, pady=2, bg="powder blue")
        lblDateoverDate.grid(row=7, column=2, sticky=W)
        textDateoverDate = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.dateoverdue, width=35)
        textDateoverDate.grid(row=7, column=3)
 
        lblActualPrice = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Actual Price", padx=70, pady=2, bg="powder blue")
        lblActualPrice.grid(row=8, column=2, sticky=W)
        textActualPrice = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.finallprice, width=35)
        textActualPrice.grid(row=8, column=3)
 
        # BUTTONS
        Framebutton = Frame(self.root, bd=12, relief="ridge", padx=20, bg="powder blue")
        Framebutton.place(x=0, y=470, width=1365, height=60)
 
        btnAddData = Button(Framebutton, command=self.add_data, text="Add Data", font=("arial", 12, "bold"), width=70, bg="blue", fg="white")
        btnAddData.grid(row=0, column=0)
 
        btnExit = Button(Framebutton, command=self.exit_app, text="Exit", font=("arial", 12, "bold"), width=50, bg="blue", fg="white")
        btnExit.grid(row=0, column=1)
 
        # INFORMATION FRAME
        FrameDetails = Frame(self.root, bd=12, relief="ridge", padx=20, bg="powder blue")
        FrameDetails.place(x=0, y=530, width=1365, height=161)
 
        Table_frame = Frame(FrameDetails, bd=6, relief="ridge", bg="powderblue")
        Table_frame.place(x=0, y=2, width=1310, height=131)
        xscroll = Scrollbar(Table_frame, orient=HORIZONTAL)
        yscroll = Scrollbar(Table_frame, orient=VERTICAL)
 
        self.Library_table = ttk.Treeview(Table_frame, column=("Member Type", "PRN No.", "ID No.", "First Name", "Last Name", "Address 1", "Address 2", "Post Code", "Mobile No.", "Book Id.", "Book Title", "Author Name", "Date Borrowed", "Date Due", "Days on Book", "Late Return Fine", "Date Overdue", "Actual Price"),
        xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
 
        xscroll.pack(side=BOTTOM, fill=X)
        yscroll.pack(side=RIGHT, fill=Y)
 
        xscroll.config(command=self.Library_table.xview)
        yscroll.config(command=self.Library_table.yview)
 
        self.Library_table.heading("Member Type", text="Member Type")
        self.Library_table.heading("PRN No.", text="PRN No.")
        self.Library_table.heading("ID No.", text="ID No.")
        self.Library_table.heading("First Name", text="First Name")
        self.Library_table.heading("Last Name", text="Last Name")
        self.Library_table.heading("Address 1", text="Address 1")
        self.Library_table.heading("Address 2", text="Address 2")
        self.Library_table.heading("Post Code", text="Post Code")
        self.Library_table.heading("Mobile No.", text="Mobile No.")
        self.Library_table.heading("Book Id.", text="Book Id.")
        self.Library_table.heading("Book Title", text="Book Title")
        self.Library_table.heading("Author Name", text="Author Name")
        self.Library_table.heading("Date Borrowed", text="Date Borrowed")
        self.Library_table.heading("Date Due", text="Date Due")
        self.Library_table.heading("Days on Book", text="Days on Book")
        self.Library_table.heading("Late Return Fine", text="Late Return Fine")
        self.Library_table.heading("Date Overdue", text="Date Overdue")
        self.Library_table.heading("Actual Price", text="Actual Price")
 
        self.Library_table['show'] = 'headings'
 
        self.Library_table.column("Member Type", width=90)
        self.Library_table.column("PRN No.", width=90)
        self.Library_table.column("ID No.", width=90)
        self.Library_table.column("First Name", width=90)
        self.Library_table.column("Last Name", width=90)
        self.Library_table.column("Address 1", width=90)
        self.Library_table.column("Address 2", width=90)
        self.Library_table.column("Post Code", width=90)
        self.Library_table.column("Mobile No.", width=90)
        self.Library_table.column("Book Id.", width=90)
        self.Library_table.column("Book Title", width=90)
        self.Library_table.column("Author Name", width=90)
        self.Library_table.column("Date Borrowed", width=90)
        self.Library_table.column("Date Due", width=90)
        self.Library_table.column("Days on Book", width=90)
        self.Library_table.column("Late Return Fine", width=90)
        self.Library_table.column("Date Overdue", width=90)
        self.Library_table.column("Actual Price", width=90)
        self.fetch_data()
        self.Library_table.pack(fill=BOTH, expand=1)
        
        
    
    def add_data(self):
        conn = py.connect(host="localhost", user="root", password="LFCOMP@105", database="librarymanagementsystem")
        my_cursor = conn.cursor()
        try:
                query = "INSERT INTO newlibrary VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
                values = (
                    self.member_var.get(), self.prn_var.get(), self.id_var.get(), self.firstname_var.get(),
                    self.lastname_var.get(), self.address1_var.get(), self.address2_var.get(),
                    self.postcode_var.get(), self.mobile_var.get(), self.bookid_var.get(), self.booktitle_var.get(),
                    self.auther_var.get(), self.dateborrowed_var.get(), self.datedue_var.get(),
                    self.daysonbook.get(), self.lateratefine_var.get(), self.dateoverdue.get(), self.finallprice.get()
                )
                my_cursor.execute(query, values)
                # Commit the changes to the database
                conn.commit()
                print("Record inserted successfully!")
                self.fetch_data()
        except Exception as e:
            # Handle any exceptions that may occur during the execution
            print(f"Error: {e}")
            # Rollback the changes in case of an error
            conn.rollback()
        finally:
            # Close the database connection
            conn.close()
        messagebox.showinfo("Success", "Data has been added successfully!")
   
    def fetch_data(self):
        conn = py.connect(host="localhost", user="root", password="LFCOMP@105", database="librarymanagementsystem")
        my_cursor = conn.cursor()
        my_cursor.execute("select  * from newlibrary")
        rows = my_cursor.fetchall()
        if len(rows) != 0:
            self.Library_table.delete(*self.Library_table.get_children())
            for i in rows:
                self.Library_table.insert("", END, values=i)
            conn.commit()
        conn.close            
 
    def exit_app(self):
        exit_prompt = messagebox.askyesno("Library Management System", "Do you want to exit?")
        if exit_prompt > 0:
            self.root.destroy()
    
 
 
if __name__ == "__main__":
    root = Tk()
    obj = LibraryManagementSystem(root)
    root.mainloop()


Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\LFS Roll. No. 5\AppData\Roaming\Python\Python310\site-packages\mysql\connector\abstracts.py", line 301, in config
    DEFAULT_CONFIGURATION[key]
KeyError: 'username'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files\Python310\lib\tkinter\__init__.py", line 1921, in __call__
    return self.func(*args)
  File "C:/Users/LFS Roll. No. 5/OneDrive/MOHAMMAD_SARFARAZ/LIBRARYMANAGEMENTSYSTEM1.py", line 202, in add_data
    conn = mysql.connector.connect(host="localhost", username="root", password="LFCOMP@105", database="librarymanagementsystem")
  File "C:\Users\LFS Roll. No. 5\AppData\Roaming\Python\Python310\site-packages\mysql\connector\__init__.py", line 179, in connect
    return MySQLConnection(*args, **kwargs)
  File "C:\Users\LFS Roll. No. 5\AppData\Roaming\Python\Python310\site-packages\mysql\connector\connection.py", line 95, in __init__
    self.connect(**kwargs)
  File "C:\Users\LFS Roll. No. 5\AppData\Roaming\Python\Python310\site-packages\mysql\connector\abstracts.py", line 713, in connect
    self.config(**kwargs)
  File "C:\Users\LFS Roll. No. 5\AppData\Roaming\Python\Python310\site-packages\mysql\connector\abstracts.py", line 303, in config
    raise AttributeError("Unsupported argument '{0}'".format(key))
AttributeError: Unsupported argument 'username'

from tkinter import *
from tkinter import ttk, messagebox
import mysql.connector
 
class LibraryManagementSystem:
    def __init__(self, root):
        self.root = root
        self.root.title("Library Management System")
        self.root.geometry("1400x700+0+0")
        self.member_var = StringVar()
        self.prn_var = StringVar()
        self.id_var = StringVar()
        self.firstname_var = StringVar()
        self.lastname_var = StringVar()
        self.address1_var = StringVar()
        self.address2_var = StringVar()
        self.postcode_var = StringVar()
        self.mobile_var = StringVar()
        self.bookid_var = StringVar()
        self.booktitle_var = StringVar()
        self.auther_var = StringVar()
        self.dateborrowed_var = StringVar()
        self.datedue_var = StringVar()
        self.daysonbook = StringVar()
        self.lateratefine_var = StringVar()
        self.dateoverdue = StringVar()
        self.finallprice = StringVar()
 
        lbltitle = Label(self.root, text="LIBRARY MANAGEMENT SYSTEM", bg="powder blue", fg="green", bd=20, relief="ridge", font=("Times New Roman", 50, "bold"), padx=2, pady=6)
        lbltitle.pack(side=TOP, fill=X)
        frame = Frame(self.root, bd=12, relief="ridge", padx=20, bg="powder blue")
        frame.place(x=0, y=130, width=1365, height=370)
 
        # DATA FRAME LEFT
        DataFrameLeft = LabelFrame(frame, text="LIBRARY MEMBERSHIP INFORMATION", bg="powder blue", fg="green", bd=12, relief="ridge", font=("Times New Roman", 12, "bold"))
        DataFrameLeft.place(x=0, y=5, width=1305, height=330)
 
        lblmember = Label(DataFrameLeft, bg="powder blue", text="MEMBER TYPE", font=("Times New Roman", 15, "bold"), padx=2, pady=6)
        lblmember.grid(row=0, column=0, sticky=W)
        comMember = ttk.Combobox(DataFrameLeft, font=("Times New Roman", 15, "bold"), width=25, textvariable=self.member_var, state="readonly")
        comMember["value"] = ("ADMIN STAFF", "STUDENT", "LECTURER")
        comMember.current(0)
        comMember.grid(row=0, column=1)
 
        lblPRN_no = Label(DataFrameLeft, font=("arial", 12, "bold"), text="PRN NO.", padx=2, pady=2, bg="powder blue")
        lblPRN_no.grid(row=1, column=0, sticky=W)
        textPRN_no = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.prn_var, width=30)
        textPRN_no.grid(row=1, column=1)
 
        lblTitle = Label(DataFrameLeft, font=("arial", 12, "bold"), text="ID NO.", padx=2, pady=2, bg="powder blue")
        lblTitle.grid(row=2, column=0, sticky=W)
        textTitle = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.id_var, width=30)
        textTitle.grid(row=2, column=1)
 
        lblFirstName = Label(DataFrameLeft, font=("arial", 12, "bold"), text="First Name", padx=2, pady=2, bg="powder blue")
        lblFirstName.grid(row=3, column=0, sticky=W)
        textFirstName = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.firstname_var, width=30)
        textFirstName.grid(row=3, column=1)
 
        lblLastName = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Last Name", padx=2, pady=2, bg="powder blue")
        lblLastName.grid(row=4, column=0, sticky=W)
        textLastName = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.lastname_var, width=30)
        textLastName.grid(row=4, column=1)
 
        lblAddress1 = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Address 1", padx=2, pady=2, bg="powder blue")
        lblAddress1.grid(row=5, column=0, sticky=W)
        textAddress1 = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.address1_var, width=30)
        textAddress1.grid(row=5, column=1)
 
        lblAddress2 = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Address 2", padx=2, pady=2, bg="powder blue")
        lblAddress2.grid(row=6, column=0, sticky=W)
        textAddress2 = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.address2_var, width=30)
        textAddress2.grid(row=6, column=1)
 
        lblPostcode = Label(DataFrameLeft, font=("arial", 12, "bold"), text=" Post Code", padx=2, pady=2, bg="powder blue")
        lblPostcode.grid(row=7, column=0, sticky=W)
        textPostcode = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.postcode_var, width=30)
        textPostcode.grid(row=7, column=1)
 
        lblMobile = Label(DataFrameLeft, font=("arial", 12, "bold"), text=" Mobile No.", padx=2, pady=2, bg="powder blue")
        lblMobile.grid(row=8, column=0, sticky=W)
        textMobile = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.mobile_var, width=30)
        textMobile.grid(row=8, column=1)
 
        lblBookid = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Book Id.", padx=2, pady=2, bg="powder blue")
        lblBookid.grid(row=0, column=2, sticky=W)
        textBookid = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.bookid_var, width=30)
        textBookid.grid(row=0, column=3)
 
        lblBooktitle = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Book Title", padx=2, pady=2, bg="powder blue")
        lblBooktitle.grid(row=1, column=2, sticky=W)
        textBooktitle = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.booktitle_var, width=30)
        textBooktitle.grid(row=1, column=3)
 
        lblAuther = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Auther Name", padx=2, pady=2, bg="powder blue")
        lblAuther.grid(row=2, column=2, sticky=W)
        textAuther = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.auther_var, width=30)
        textAuther.grid(row=2, column=3)
 
        lblDateBorrowed = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Date Borrowed ", padx=2, pady=2, bg="powder blue")
        lblDateBorrowed.grid(row=3, column=2, sticky=W)
        textDateBorrowed = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.dateborrowed_var, width=30)
        textDateBorrowed.grid(row=3, column=3)
 
        lblDateDue = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Date Due: ", padx=2, pady=2, bg="powder blue")
        lblDateDue.grid(row=4, column=2, sticky=W)
        textDateDue = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.datedue_var, width=30)
        textDateDue.grid(row=4, column=3)
 
        lblDaysonBook = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Days on Book", padx=2, pady=2, bg="powder blue")
        lblDaysonBook.grid(row=5, column=2, sticky=W)
        textDaysonBook = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.daysonbook, width=30)
        textDaysonBook.grid(row=5, column=3)
 
        lbllateretuenfine = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Late Return Fine", padx=2, pady=2, bg="powder blue")
        lbllateretuenfine.grid(row=6, column=2, sticky=W)
        textlateretuenfine = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.lateratefine_var, width=30)
        textlateretuenfine.grid(row=6, column=3)
 
        lblDateoverDate = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Date over Date", padx=2, pady=2, bg="powder blue")
        lblDateoverDate.grid(row=7, column=2, sticky=W)
        textDateoverDate = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.dateoverdue, width=30)
        textDateoverDate.grid(row=7, column=3)
 
        lblActualPrice = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Actual Price", padx=2, pady=2, bg="powder blue")
        lblActualPrice.grid(row=8, column=2, sticky=W)
        textActualPrice = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.finallprice, width=30)
        textActualPrice.grid(row=8, column=3)
 
        # BUTTONS
        Framebutton = Frame(self.root, bd=12, relief="ridge", padx=20, bg="powder blue")
        Framebutton.place(x=0, y=500, width=1365, height=60)
 
        btnAddData = Button(Framebutton, command=self.add_data, text="Add Data", font=("arial", 12, "bold"), width=70, bg="blue", fg="white")
        btnAddData.grid(row=0, column=0)
 
        btnExit = Button(Framebutton, command=self.exit_app, text="Exit", font=("arial", 12, "bold"), width=50, bg="blue", fg="white")
        btnExit.grid(row=0, column=1)
 
        # INFORMATION FRAME
        FrameDetails = Frame(self.root, bd=12, relief="ridge", padx=20, bg="powder blue")
        FrameDetails.place(x=0, y=560, width=1365, height=130)
 
        Table_frame = Frame(FrameDetails, bd=6, relief="ridge", bg="powder blue")
        Table_frame.place(x=0, y=2, width=1310, height=100)
        xscroll = Scrollbar(Table_frame, orient=HORIZONTAL)
        yscroll = Scrollbar(Table_frame, orient=VERTICAL)
 
        self.Library_table = ttk.Treeview(Table_frame, column=("Member Type", "PRN No.", "ID No.", "First Name", "Last Name", "Address 1", "Address 2", "Post Code", "Mobile No.", "Book Id.", "Book Title", "Author Name", "Date Borrowed", "Date Due", "Days on Book", "Late Return Fine", "Date Overdue", "Actual Price"),
        xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
 
        xscroll.pack(side=BOTTOM, fill=X)
        yscroll.pack(side=RIGHT, fill=Y)
 
        xscroll.config(command=self.Library_table.xview)
        yscroll.config(command=self.Library_table.yview)
 
        self.Library_table.heading("Member Type", text="Member Type")
        self.Library_table.heading("PRN No.", text="PRN No.")
        self.Library_table.heading("ID No.", text="ID No.")
        self.Library_table.heading("First Name", text="First Name")
        self.Library_table.heading("Last Name", text="Last Name")
        self.Library_table.heading("Address 1", text="Address 1")
        self.Library_table.heading("Address 2", text="Address 2")
        self.Library_table.heading("Post Code", text="Post Code")
        self.Library_table.heading("Mobile No.", text="Mobile No.")
        self.Library_table.heading("Book Id.", text="Book Id.")
        self.Library_table.heading("Book Title", text="Book Title")
        self.Library_table.heading("Author Name", text="Author Name")
        self.Library_table.heading("Date Borrowed", text="Date Borrowed")
        self.Library_table.heading("Date Due", text="Date Due")
        self.Library_table.heading("Days on Book", text="Days on Book")
        self.Library_table.heading("Late Return Fine", text="Late Return Fine")
        self.Library_table.heading("Date Overdue", text="Date Overdue")
        self.Library_table.heading("Actual Price", text="Actual Price")
 
        self.Library_table['show'] = 'headings'
 
        self.Library_table.column("Member Type", width=90)
        self.Library_table.column("PRN No.", width=90)
        self.Library_table.column("ID No.", width=90)
        self.Library_table.column("First Name", width=90)
        self.Library_table.column("Last Name", width=90)
        self.Library_table.column("Address 1", width=90)
        self.Library_table.column("Address 2", width=90)
        self.Library_table.column("Post Code", width=90)
        self.Library_table.column("Mobile No.", width=90)
        self.Library_table.column("Book Id.", width=90)
        self.Library_table.column("Book Title", width=90)
        self.Library_table.column("Author Name", width=90)
        self.Library_table.column("Date Borrowed", width=90)
        self.Library_table.column("Date Due", width=90)
        self.Library_table.column("Days on Book", width=90)
        self.Library_table.column("Late Return Fine", width=90)
        self.Library_table.column("Date Overdue", width=90)
        self.Library_table.column("Actual Price", width=90)
        self.fetch_data()

        self.Library_table.pack(fill=BOTH, expand=1)
        
 
    def add_data(self):
        conn = mysql.connector.connect(host="localhost", username="root", password="LFCOMP@105", database="librarymanagementsystem")
        my_cursor = conn.cursor()
        my_cursor.execute("insert into newlibrary VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                          (self.member_var.get(), self.prn_var.get(), self.id_var.get(), self.firstname_var.get(),
                           self.lastname_var.get(), self.address1_var.get(), self.address2_var.get(),
                           self.postcode_var.get(), self.mobile_var.get(), self.bookid_var.get(), self.booktitle_var.get(),
                           self.auther_var.get(), self.dateborrowed_var.get(), self.datedue_var.get(),
                           self.daysonbook.get(), self.lateratefine_var.get(), self.dateoverdue.get(), self.finallprice.get()))
        conn.commit()
        self.fetch_data()
        conn.close()
        messagebox.showinfo("Success", "Data has been added successfully!")
 
    def fetch_data(self):
        conn = mysql.connector.connect(host="localhost", user="root", password="LFCOMP@105", database="librarymanagementsystem")
        my_cursor = conn.cursor()
        my_cursor.execute("select * from newlibrary")
        rows = my_cursor.fetchall()
        if len(rows) != 0:
            self.Library_table.delete(*self.Library_table.get_children())
            for i in rows:
                self.Library_table.insert("", END, values=i)
            conn.commit()
        conn.close()
 
    def exit_app(self):
        exit_prompt = messagebox.askyesno("Library Management System", "Do you want to exit?")
        if exit_prompt > 0:
            self.root.destroy()
 
 
 
if __name__ == "__main__":
    root = Tk()
    obj = LibraryManagementSystem(root)
    root.mainloop()

from tkinter import *
from tkinter import ttk, messagebox
import mysql.connector

class LibraryManagementSystem:
    def __init__(self, root):
        self.root = root
        self.root.title("Library Management System")
        self.root.geometry("1400x700+0+0")
        self.member_var = StringVar()
        self.prn_var = StringVar()
        self.id_var = StringVar()
        self.firstname_var = StringVar()
        self.lastname_var = StringVar()
        self.address1_var = StringVar()
        self.address2_var = StringVar()
        self.postcode_var = StringVar()
        self.mobile_var = StringVar()
        self.bookid_var = StringVar()
        self.booktitle_var = StringVar()
        self.auther_var = StringVar()
        self.dateborrowed_var = StringVar()
        self.datedue_var = StringVar()
        self.daysonbook = StringVar()
        self.lateratefine_var = StringVar()
        self.dateoverdue = StringVar()
        self.finallprice = StringVar()

        lbltitle = Label(self.root, text="LIBRARY MANAGEMENT SYSTEM", bg="powder blue", fg="green", bd=20, relief="ridge", font=("Times New Roman", 50, "bold"), padx=2, pady=6)
        lbltitle.pack(side=TOP, fill=X)
        frame = Frame(self.root, bd=12, relief="ridge", padx=20, bg="powder blue")
        frame.place(x=0, y=130, width=1365, height=370)

        # DATA FRAME LEFT
        DataFrameLeft = LabelFrame(frame, text="LIBRARY MEMBERSHIP INFORMATION", bg="powder blue", fg="green", bd=12, relief="ridge", font=("Times New Roman", 12, "bold"))
        DataFrameLeft.place(x=0, y=5, width=920, height=330)

        lblmember = Label(DataFrameLeft, bg="powder blue", text="MEMBER TYPE", font=("Times New Roman", 15, "bold"), padx=2, pady=6)
        lblmember.grid(row=0, column=0, sticky=W)
        comMember = ttk.Combobox(DataFrameLeft, font=("Times New Roman", 15, "bold"), width=25, textvariable=self.member_var, state="readonly")
        comMember["value"] = ("ADMIN STAFF", "STUDENT", "LECTURER")
        comMember.current(0)
        comMember.grid(row=0, column=1)

        lblPRN_no = Label(DataFrameLeft, font=("arial", 12, "bold"), text="PRN NO.", padx=2, pady=2, bg="powder blue")
        lblPRN_no.grid(row=1, column=0, sticky=W)
        textPRN_no = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.prn_var, width=30)
        textPRN_no.grid(row=1, column=1)

        lblTitle = Label(DataFrameLeft, font=("arial", 12, "bold"), text="ID NO.", padx=2, pady=2, bg="powder blue")
        lblTitle.grid(row=2, column=0, sticky=W)
        textTitle = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.id_var, width=30)
        textTitle.grid(row=2, column=1)

        lblFirstName = Label(DataFrameLeft, font=("arial", 12, "bold"), text="First Name", padx=2, pady=2, bg="powder blue")
        lblFirstName.grid(row=3, column=0, sticky=W)
        textFirstName = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.firstname_var, width=30)
        textFirstName.grid(row=3, column=1)

        lblLastName = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Last Name", padx=2, pady=2, bg="powder blue")
        lblLastName.grid(row=4, column=0, sticky=W)
        textLastName = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.lastname_var, width=30)
        textLastName.grid(row=4, column=1)

        lblAddress1 = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Address 1", padx=2, pady=2, bg="powder blue")
        lblAddress1.grid(row=5, column=0, sticky=W)
        textAddress1 = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.address1_var, width=30)
        textAddress1.grid(row=5, column=1)

        lblAddress2 = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Address 2", padx=2, pady=2, bg="powder blue")
        lblAddress2.grid(row=6, column=0, sticky=W)
        textAddress2 = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.address2_var, width=30)
        textAddress2.grid(row=6, column=1)

        lblPostcode = Label(DataFrameLeft, font=("arial", 12, "bold"), text=" Post Code", padx=2, pady=2, bg="powder blue")
        lblPostcode.grid(row=7, column=0, sticky=W)
        textPostcode = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.postcode_var, width=30)
        textPostcode.grid(row=7, column=1)

        lblMobile = Label(DataFrameLeft, font=("arial", 12, "bold"), text=" Mobile No.", padx=2, pady=2, bg="powder blue")
        lblMobile.grid(row=8, column=0, sticky=W)
        textMobile = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.mobile_var, width=30)
        textMobile.grid(row=8, column=1)

        lblBookid = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Book Id.", padx=2, pady=2, bg="powder blue")
        lblBookid.grid(row=0, column=2, sticky=W)
        textBookid = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.bookid_var, width=30)
        textBookid.grid(row=0, column=3)

        lblBooktitle = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Book Title", padx=2, pady=2, bg="powder blue")
        lblBooktitle.grid(row=1, column=2, sticky=W)
        textBooktitle = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.booktitle_var, width=30)
        textBooktitle.grid(row=1, column=3)

                lblAuther = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Auther Name", padx=2, pady=2, bg="powder blue")
        lblAuther.grid(row=2, column=2, sticky=W)
        textAuther = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.auther_var, width=30)
        textAuther.grid(row=2, column=3)

        lblDateBorrowed = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Date Borrowed ", padx=2, pady=2, bg="powder blue")
        lblDateBorrowed.grid(row=3, column=2, sticky=W)
        textDateBorrowed = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.dateborrowed_var, width=30)
        textDateBorrowed.grid(row=3, column=3)

        lblDateDue = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Date Due: ", padx=2, pady=2, bg="powder blue")
        lblDateDue.grid(row=4, column=2, sticky=W)
        textDateDue = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.datedue_var, width=30)
        textDateDue.grid(row=4, column=3)

        lblDaysonBook = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Days on Book", padx=2, pady=2, bg="powder blue")
        lblDaysonBook.grid(row=5, column=2, sticky=W)
        textDaysonBook = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.daysonbook, width=30)
        textDaysonBook.grid(row=5, column=3)

        lbllateretuenfine = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Late Return Fine", padx=2, pady=2, bg="powder blue")
        lbllateretuenfine.grid(row=6, column=2, sticky=W)
        textlateretuenfine = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.lateratefine_var, width=30)
        textlateretuenfine.grid(row=6, column=3)

        lblDateoverDate = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Date over Date", padx=2, pady=2, bg="powder blue")
        lblDateoverDate.grid(row=7, column=2, sticky=W)
        textDateoverDate = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.dateoverdue, width=30)
        textDateoverDate.grid(row=7, column=3)

        lblActualPrice = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Actual Price", padx=2, pady=2, bg="powder blue")
        lblActualPrice.grid(row=8, column=2, sticky=W)
        textActualPrice = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.finallprice, width=30)
        textActualPrice.grid(row=8, column=3)

        # BUTTONS
        Framebutton = Frame(self.root, bd=12, relief="ridge", padx=20, bg="powder blue")
        Framebutton.place(x=0, y=500, width=1365, height=60)

        btnAddData = Button(Framebutton, command=self.add_data, text="Add Data", font=("arial", 12, "bold"), width=70, bg="blue", fg="white")
        btnAddData.grid(row=0, column=0)

        btnExit = Button(Framebutton, command=self.exit_app, text="Exit", font=("arial", 12, "bold"), width=50, bg="blue", fg="white")
        btnExit.grid(row=0, column=1)

        # INFORMATION FRAME
        FrameDetails = Frame(self.root, bd=12, relief="ridge", padx=20, bg="powder blue")
        FrameDetails.place(x=0, y=560, width=1365, height=130)

        Table_frame = Frame(FrameDetails, bd=6, relief="ridge", bg="powder blue")
        Table_frame.place(x=0, y=2, width=1310, height=100)
        xscroll = Scrollbar(Table_frame, orient=HORIZONTAL)
        yscroll = Scrollbar(Table_frame, orient=VERTICAL)

        self.Library_table = ttk.Treeview(Table_frame, column=("Member Type", "PRN No.", "ID No.", "First Name", "Last Name", "Address 1", "Address 2", "Post Code", "Mobile No.", "Book Id.", "Book Title", "Author Name", "Date Borrowed", "Date Due", "Days on Book", "Late Return Fine", "Date Overdue", "Actual Price"),
        xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)

        xscroll.pack(side=BOTTOM, fill=X)
        yscroll.pack(side=RIGHT, fill=Y)

        xscroll.config(command=self.Library_table.xview)
        yscroll.config(command=self.Library_table.yview)

        self.Library_table.heading("Member Type", text="Member Type")
        self.Library_table.heading("PRN No.", text="PRN No.")
        self.Library_table.heading("ID No.", text="ID No.")
        self.Library_table.heading("First Name", text="First Name")
        self.Library_table.heading("Last Name", text="Last Name")
        self.Library_table.heading("Address 1", text="Address 1")
        self.Library_table.heading("Address 2", text="Address 2")
        self.Library_table.heading("Post Code", text="Post Code")
        self.Library_table.heading("Mobile No.", text="Mobile No.")
        self.Library_table.heading("Book Id.", text="Book Id.")
        self.Library_table.heading("Book Title", text="Book Title")
        self.Library_table.heading("Author Name", text="Author Name")
        self.Library_table.heading("Date Borrowed", text="Date Borrowed")
        self.Library_table.heading("Date Due", text="Date Due")
        self.Library_table.heading("Days on Book", text="Days on Book")
        self.Library_table.heading("Late Return Fine", text="Late Return Fine")
        self.Library_table.heading("Date Overdue", text="Date Overdue")
        self.Library_table.heading("Actual Price", text="Actual Price")

        self.Library_table['show'] = 'headings'

        self.Library_table.column("Member Type", width=90)
        self.Library_table.column("PRN No.", width=90)
        self.Library_table.column("ID No.", width=90)
        self.Library_table.column("First Name", width=90)
        self.Library_table.column("Last Name", width=90)
        self.Library_table.column("Address 1", width=90)
        self.Library_table.column("Address 2", width=90)
        self.Library_table.column("Post Code", width=90)
        self.Library_table.column("Mobile No.", width=90)
        self.Library_table.column("Book Id.", width=90)
        self.Library_table.column("Book Title", width=90)
        self.Library_table.column("Author Name", width=90)
        self.Library_table.column("Date Borrowed", width=90)
        self.Library_table.column("Date Due", width=90)
        self.Library_table.column("Days on Book", width=90)
        self.Library_table.column("Late Return Fine", width=90)
        self.Library_table.column("Date Overdue", width=90)
        self.Library_table.column("Actual Price", width=90)

        self.Library_table.pack(fill=BOTH, expand=1)
        self.Library_table.bind("<ButtonRelease-1>", self.get_cursor)

    def add_data(self):
        conn = mysql.connector.connect(host="localhost", username="root", password="LFCOMP@105", database="librarymanagementsystem")
        my_cursor = conn.cursor()
        my_cursor.execute("INSERT INTO newlibrary VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                          (self.member_var.get(), self.prn_var.get(), self.id_var.get(), self.firstname_var.get(),
                           self.lastname_var.get(), self.address1_var.get(), self.address2_var.get(),
                           self.postcode_var.get(), self.mobile_var.get(), self.bookid_var.get(), self.booktitle_var.get(),
                           self.auther_var.get(), self.dateborrowed_var.get(), self.datedue_var.get(),
                           self.daysonbook.get(), self.lateratefine_var.get(), self.dateoverdue.get(), self.finallprice.get()))
        conn.commit()
        self.fetch_data()
        conn.close()
        messagebox.showinfo("Success", "Data has been added successfully!")

    def fetch_data(self):
        conn = mysql.connector.connect(host="localhost", username="root", password="LFCOMP@105", database="librarymanagementsystem")
        my_cursor = conn.cursor()
        my_cursor.execute("SELECT * FROM newlibrary")
        rows = my_cursor.fetchall()
        if len(rows) != 0:
            self.Library_table.delete(*self.Library_table.get_children())
            for i in rows:
                self.Library_table.insert("", END, values=i)
            conn.commit()

    def exit_app(self):
        exit_prompt = messagebox.askyesno("Library Management System", "Do you want to exit?")
        if exit_prompt > 0:
            self.root.destroy()



if __name__ == "__main__":
    root = Tk()
    obj = LibraryManagementSystem(root)
    root.mainloop()



from tkinter import *
from tkinter import ttk
import mysql.connector

class LibraryManagementSystem:
    def __init__(self, root):
        self.root = root
        self.root.title("Library Management System")
        self.root.geometry("1400x700+0+0")
        self.member_var = StringVar()
        self.prn_var = StringVar()
        self.id_var = StringVar()
        self.firstname_var = StringVar()
        self.lastname_var = StringVar()
        self.address1_var = StringVar()
        self.address2_var = StringVar()
        self.postcode_var = StringVar()
        self.mobile_var = StringVar()
        self.bookid_var = StringVar()
        self.booktitle_var = StringVar()
        self.auther_var = StringVar()
        self.dateborrowed_var = StringVar()
        self.datedue_var = StringVar()
        self.daysonbook = StringVar()
        self.lateratefine_var = StringVar()
        self.dateoverdue = StringVar()
        self.finallprice = StringVar()

        lbltitle = Label(self.root, text="LIBRARY MANAGEMENT SYSTEM", bg="powder blue", fg="green", bd=20, relief="ridge", font=("Times New Roman", 50, "bold"), padx=2, pady=6)
        lbltitle.pack(side=TOP, fill=X)
        frame = Frame(self.root, bd=12, relief="ridge", padx=20, bg="powder blue")
        frame.place(x=0, y=130, width=1365, height=370)

        # DATA FRAME LEFT
        DataFrameLeft = LabelFrame(frame, text="LIBRARY MEMBERSHIP INFORMATION", bg="powder blue", fg="green", bd=12, relief="ridge", font=("Times New Roman", 12, "bold"))
        DataFrameLeft.place(x=0, y=5, width=920, height=330)

        lblmember = Label(DataFrameLeft, bg="powder blue", text="MEMBER TYPE", font=("Times New Roman", 15, "bold"), padx=2, pady=6)
        lblmember.grid(row=0, column=0, sticky=W)
        comMember = ttk.Combobox(DataFrameLeft, font=("Times New Roman", 15, "bold"), width=25, textvariable=self.member_var, state="readonly")
        comMember["value"] = ("ADMIN STAFF", "STUDENT", "LECTURER")
        comMember.current(0)
        comMember.grid(row=0, column=1)

        lblPRN_no = Label(DataFrameLeft, font=("arial", 12, "bold"), text="PRN NO.", padx=2, pady=2, bg="powder blue")
        lblPRN_no.grid(row=1, column=0, sticky=W)
        textPRN_no = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.prn_var, width=30)
        textPRN_no.grid(row=1, column=1)

        lblTitle = Label(DataFrameLeft, font=("arial", 12, "bold"), text="ID NO.", padx=2, pady=2, bg="powder blue")
        lblTitle.grid(row=2, column=0, sticky=W)
        textTitle = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.id_var, width=30)
        textTitle.grid(row=2, column=1)

        lblFirstName = Label(DataFrameLeft, font=("arial", 12, "bold"), text="First Name", padx=2, pady=2, bg="powder blue")
        lblFirstName.grid(row=3, column=0, sticky=W)
        textFirstName = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.firstname_var, width=30)
        textFirstName.grid(row=3, column=1)

        lblLastName = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Last Name", padx=2, pady=2, bg="powder blue")
        lblLastName.grid(row=4, column=0, sticky=W)
        textLastName = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.lastname_var, width=30)
        textLastName.grid(row=4, column=1)

        lblAddress1 = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Address 1", padx=2, pady=2, bg="powder blue")
        lblAddress1.grid(row=5, column=0, sticky=W)
        textAddress1 = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.address1_var, width=30)
                textAddress1.grid(row=5, column=1)

        lblAddress2 = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Address 2", padx=2, pady=2, bg="powder blue")
        lblAddress2.grid(row=6, column=0, sticky=W)
        textAddress2 = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.address2_var, width=30)
        textAddress2.grid(row=6, column=1)

        lblPostcode = Label(DataFrameLeft, font=("arial", 12, "bold"), text=" Post Code", padx=2, pady=2, bg="powder blue")
        lblPostcode.grid(row=7, column=0, sticky=W)
        textPostcode = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.postcode_var, width=30)
        textPostcode.grid(row=7, column=1)

        lblMobile = Label(DataFrameLeft, font=("arial", 12, "bold"), text=" Mobile No.", padx=2, pady=2, bg="powder blue")
        lblMobile.grid(row=8, column=0, sticky=W)
        textMobile = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.mobile_var, width=30)
        textMobile.grid(row=8, column=1)

        lblBookid = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Book Id.", padx=2, pady=2, bg="powder blue")
        lblBookid.grid(row=0, column=2, sticky=W)
        textBookid = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.bookid_var, width=30)
        textBookid.grid(row=0, column=3)

        lblBooktitle = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Book Title", padx=2, pady=2, bg="powder blue")
        lblBooktitle.grid(row=1, column=2, sticky=W)
        textBooktitle = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.booktitle_var, width=30)
        textBooktitle.grid(row=1, column=3)

        lblAuther = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Auther Name", padx=2, pady=2, bg="powder blue")
        lblAuther.grid(row=2, column=2, sticky=W)
        textAuther = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.auther_var, width=30)
        textAuther.grid(row=2, column=3)

        lblDateBorrowed = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Date Borrowed ", padx=2, pady=2, bg="powder blue")
        lblDateBorrowed.grid(row=3, column=2, sticky=W)
        textDateBorrowed = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.dateborrowed_var, width=30)
        textDateBorrowed.grid(row=3, column=3)

        lblDateDue = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Date Due: ", padx=2, pady=2, bg="powder blue")
        lblDateDue.grid(row=4, column=2, sticky=W)
        textDateDue = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.datedue_var, width=30)
        textDateDue.grid(row=4, column=3)

        lblDaysonBook = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Days on Book", padx=2, pady=2, bg="powder blue")
        lblDaysonBook.grid(row=5, column=2, sticky=W)
        textDaysonBook = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.daysonbook, width=30)
        textDaysonBook.grid(row=5, column=3)

        lbllateretuenfine = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Late Return Fine", padx=2, pady=2, bg="powder blue")
        lbllateretuenfine.grid(row=6, column=2, sticky=W)
        textlateretuenfine = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.lateratefine_var, width=30)
        textlateretuenfine.grid(row=6, column=3)

        lblDateoverDate = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Date over Date", padx=2, pady=2, bg="powder blue")
        lblDateoverDate.grid(row=7, column=2, sticky=W)
        textDateoverDate = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.dateoverdue, width=30)
        textDateoverDate.grid(row=7, column=3)

        lblActualPrice = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Actual Price", padx=2, pady=2, bg="powder blue")
        lblActualPrice.grid(row=8, column=2, sticky=W)
        textActualPrice = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.finallprice, width=30)
        textActualPrice.grid(row=8, column=3)

        # BUTTONS
        Framebutton = Frame(self.root, bd=12, relief="ridge", padx=20, bg="powder blue")
        Framebutton.place(x=0, y=500, width=1365, height=60)

        btnAddData = Button(Framebutton, command=self.adda_data, text="Add Data", font=("arial", 12, "bold"), width=70, bg="blue", fg="white")
        btnAddData.grid(row=0, column=0)

        btnAddData = Button(Framebutton, text="Exit", font=("arial", 12, "bold"), width=50, bg="blue", fg="white")
        btnAddData.grid(row=0, column=1)

        # INFORMATION FRAME
        FrameDetails = Frame(self.root, bd=12, relief="ridge", padx=20, bg="powder blue")
        FrameDetails.place(x=0, y=560, width=1365, height=130)

        Table_frame = Frame(FrameDetails, bd=6, relief="ridge", bg="powder blue")
        Table_frame.place(x=0, y=2, width=1310, height=100)
         xscroll = Scrollbar(Table_frame, orient=HORIZONTAL)
        yscroll = Scrollbar(Table_frame, orient=VERTICAL)

        self.Library_table = ttk.Treeview(Table_frame, column=("Member Type", "PRN No.", "ID No.", "First Name", "Last Name", "Address 1", "Address 2", "Post Code", "Mobile No.", "Book Id.", "Book Title", "Author Name", "Date Borrowed", "Date Due", "Days on Book", "Late Return Fine", "Date Overdue", "Actual Price"),
        xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)

        xscroll.pack(side=BOTTOM, fill=X)
        yscroll.pack(side=RIGHT, fill=Y)

        xscroll.config(command=self.Library_table.xview)
        yscroll.config(command=self.Library_table.yview)

        self.Library_table.heading("Member Type", text="Member Type")
        self.Library_table.heading("PRN No.", text="PRN No.")
        self.Library_table.heading("ID No.", text="ID No.")
        self.Library_table.heading("First Name", text="First Name")
        self.Library_table.heading("Last Name", text="Last Name")
        self.Library_table.heading("Address 1", text="Address 1")
        self.Library_table.heading("Address 2", text="Address 2")
        self.Library_table.heading("Post Code", text="Post Code")
        self.Library_table.heading("Mobile No.", text="Mobile No.")
        self.Library_table.heading("Book Id.", text="Book Id.")
        self.Library_table.heading("Book Title", text="Book Title")
        self.Library_table.heading("Author Name", text="Author Name")
        self.Library_table.heading("Date Borrowed", text="Date Borrowed")
        self.Library_table.heading("Date Due", text="Date Due")
        self.Library_table.heading("Days on Book", text="Days on Book")
        self.Library_table.heading("Late Return Fine", text="Late Return Fine")
        self.Library_table.heading("Date Overdue", text="Date Overdue")
        self.Library_table.heading("Actual Price", text="Actual Price")

        self.Library_table['show'] = 'headings'

        self.Library_table.column("Member Type", width=90)
        self.Library_table.column("PRN No.", width=90)
        self.Library_table.column("ID No.", width=90)
        self.Library_table.column("First Name", width=90)
        self.Library_table.column("Last Name", width=90)
        self.Library_table.column("Address 1", width=90)
        self.Library_table.column("Address 2", width=90)
        self.Library_table.column("Post Code", width=90)
        self.Library_table.column("Mobile No.", width=90)
        self.Library_table.column("Book Id.", width=90)
        self.Library_table.column("Book Title", width=90)
        self.Library_table.column("Author Name", width=90)
        self.Library_table.column("Date Borrowed", width=90)
        self.Library_table.column("Date Due", width=90)
        self.Library_table.column("Days on Book", width=90)
        self.Library_table.column("Late Return Fine", width=90)
        self.Library_table.column("Date Overdue", width=90)
        self.Library_table.column("Actual Price", width=90)

        self.Library_table.pack(fill=BOTH, expand=1)
        self.Library_table.bind("<ButtonRelease-1>", self.get_cursor)

    def adda_data(self):
        conn = mysql.connector.connect(host="localhost", username="root", password="LFCOMP@105", database="librarymanagementsystem")
        my_cursor = conn.cursor()
        my_cursor.execute("INSERT INTO newlibrary VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                          (self.member_var.get(), self.prn_var.get(), self.id_var.get(), self.firstname_var.get(),
                           self.lastname_var.get(), self.address1_var.get(), self.address2_var.get(),
                           self.postcode_var.get(), self.mobile_var.get(), self.bookid_var.get(), self.booktitle_var.get(),
                           self.auther_var.get(), self.dateborrowed_var.get(), self.datedue_var.get(),
                           self.daysonbook.get(), self.lateratefine_var.get(), self.dateoverdue.get(), self.finallprice.get()))
        conn.commit()
        self.fetch_data()
        conn.close()

    def fetch_data(self):
        conn = mysql.connector.connect(host="localhost", username="root", password="LFCOMP@105", database="librarymanagementsystem")
        my_cursor = conn.cursor()
        my_cursor.execute("SELECT * FROM newlibrary")
        rows = my_cursor.fetchall()
        if len(rows) != 0:
            self.Library_table.delete(*self.Library_table.get_children())
            for i in rows:
                self.Library_table.insert("", END, values=i)
            conn.commit()
        conn.close()

    def get_cursor(self, event=""):
        cursor_row = self.Library_table.focus()
        content = self.Library_table.item(cursor_row)
        row = content["values"]
        self.member_var.set(row[0])
        self.prn_var.set(row[1])
        self.id_var.set(row[2])
        self.firstname_var.set(row[3])
        self.lastname_var.set(row[4])
        self.address1_var.set(row[5])
        self.address2_var.set(row[6])
        self.postcode_var.set(row[7])
        self.mobile_var.set(row[8])
        self.bookid_var.set(row[9])
        self.booktitle_var.set(row[10])
        self.auther_var.set(row[11])
        self.dateborrowed_var.set(row[12])
        self.datedue_var.set(row[13])
        self.daysonbook.set(row[14])
        self.lateratefine_var.set(row[15])
        self.dateoverdue.set(row[16])
        self.finallprice.set(row[17])



    


if __name__ == "__main__":
    root = Tk()
    obj = LibraryManagementSystem(root)
    root.mainloop()


from tkinter import *
from tkinter import ttk
import mysql.connector
import datetime
#from tkinter import messegebox
 
class LibraryManagementSystem:
    def __init__(self, root):
        self.root = root
        self.root.title("Library Management System")
        self.root.geometry("1400x700+0+0")
        self.member_var=StringVar()
        self.prn_var=StringVar()
        self.id_var=StringVar()
        self.firstname_var=StringVar()
        self.lastname_var=StringVar()
        self.address1_var=StringVar()
        self.address2_var=StringVar()
        self.postcode_var=StringVar()
        self.mobile_var=StringVar()
        self.bookid_var=StringVar()
        self.booktitle_var=StringVar()
        self.auther_var=StringVar()
        self.dateborrowed_var=StringVar()
        self.datedue_var=StringVar()
        self.daysonbook=StringVar()
        self.lateratefine_var=StringVar()
        self.dateoverdue=StringVar()
        self.finallprice=StringVar()
        
        lbltitle=Label(self.root,text="LIBRARY MANGEMENT SYSTEM",bg="powder blue",fg="green",bd=20,relief="ridge",font=("Times New Roman",50,"bold"),padx=2,pady=6)
        lbltitle.pack(side=TOP,fill=X)
        frame=Frame(self.root,bd=12,relief="ridge",padx=20,bg="powder blue")
        frame.place(x=0,y=130,width=1365,height=370)
        #DATA FRAME LEFT
        DataFrameLeft=LabelFrame(frame,text="LIBRARY MEMBERSHIP INFORMATION",bg="powder blue",fg="green",bd=12,relief="ridge",font=("Times New Roman",12,"bold"))
        DataFrameLeft.place(x=0,y=5,width=920,height=330)
        
        lblmember=Label(DataFrameLeft,bg="powder blue",text="MEMBER TYPE",font=("Times New Roman",15,"bold"),padx=2,pady=6)
        lblmember.grid(row=0,column=0,sticky=W)
        comMember=ttk.Combobox(DataFrameLeft,font=("Times New Roman",15,"bold"),width=25,textvariable=self.member_var,state="readonly")
        comMember["value"]=("ADMIN STAFF","STUDENT","LECTURER")
        comMember.current(0)
        comMember.grid(row=0,column=1)
        
        lblPRN_no=Label(DataFrameLeft,font=("arial",12,"bold"),text="PRN NO.",padx=2,pady=2,bg="powder blue")
        lblPRN_no.grid(row=1,column=0,sticky=W)
        textPRN_no=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.prn_var,width=30)
        textPRN_no.grid(row=1,column=1)

        lblTitle=Label(DataFrameLeft,font=("arial",12,"bold"),text="ID NO.",padx=2,pady=2,bg="powder blue")
        lblTitle.grid(row=2,column=0,sticky=W)
        textTitle=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.id_var,width=30)
        textTitle.grid(row=2,column=1)

        lblFirstName=Label(DataFrameLeft,font=("arial",12,"bold"),text="First Name",padx=2,pady=2,bg="powder blue")
        lblFirstName.grid(row=3,column=0,sticky=W)
        textFirstName=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.firstname_var,width=30)
        textFirstName.grid(row=3,column=1)

        lblLastName=Label(DataFrameLeft,font=("arial",12,"bold"),text="Last Name",padx=2,pady=2,bg="powder blue")
        lblLastName.grid(row=4,column=0,sticky=W)
        textLastName=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.lastname_var,width=30)
        textLastName.grid(row=4,column=1)

        lblAddress1=Label(DataFrameLeft,font=("arial",12,"bold"),text="Address 1",padx=2,pady=2,bg="powder blue")
        lblAddress1.grid(row=5,column=0,sticky=W)
        textAddress1=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.address1_var,width=30)
        textAddress1.grid(row=5,column=1)

        lblAddress2=Label(DataFrameLeft,font=("arial",12,"bold"),text="Address 2",padx=2,pady=2,bg="powder blue")
        lblAddress2.grid(row=6,column=0,sticky=W)
        textAddress2=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.address2_var,width=30)
        textAddress2.grid(row=6,column=1)

        lblPostcode=Label(DataFrameLeft,font=("arial",12,"bold"),text=" Post Code",padx=2,pady=2,bg="powder blue")
        lblPostcode.grid(row=7,column=0,sticky=W)
        textPostcode=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.postcode_var,width=30)
        textPostcode.grid(row=7,column=1)

        lblMobile=Label(DataFrameLeft,font=("arial",12,"bold"),text=" Mobile No.",padx=2,pady=2,bg="powder blue")
        lblMobile.grid(row=8,column=0,sticky=W)
        textMobile=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.mobile_var,width=30)
        textMobile.grid(row=8,column=1)


        lblBookid=Label(DataFrameLeft,font=("arial",12,"bold"),text="Book Id.",padx=2,pady=2,bg="powder blue")
        lblBookid.grid(row=0,column=2,sticky=W)
        textBookid=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.bookid_var,width=30)
        textBookid.grid(row=0,column=3)

        lblBooktitle=Label(DataFrameLeft,font=("arial",12,"bold"),text="Book Title",padx=2,pady=2,bg="powder blue")
        lblBooktitle.grid(row=1,column=2,sticky=W)
        textBooktitle=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.booktitle_var,width=30)
        textBooktitle.grid(row=1,column=3)
        
        lblAuther=Label(DataFrameLeft,font=("arial",12,"bold"),text="Auther Name",padx=2,pady=2,bg="powder blue")
        lblAuther.grid(row=2,column=2,sticky=W)
        textAuther=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.auther_var,width=30)
        textAuther.grid(row=2,column=3)

        lblDateBorrowed=Label(DataFrameLeft,font=("arial",12,"bold"),text="Date Borrowed ",padx=2,pady=2,bg="powder blue")
        lblDateBorrowed.grid(row=3,column=2,sticky=W)
        textDateBorrowed=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.dateborrowed_var,width=30)
        textDateBorrowed.grid(row=3,column=3)

        lblDateDue=Label(DataFrameLeft,font=("arial",12,"bold"),text="Date Due: ",padx=2,pady=2,bg="powder blue")
        lblDateDue.grid(row=4,column=2,sticky=W)
        textDateDue=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.datedue_var,width=30)
        textDateDue.grid(row=4,column=3)

        lblDaysonBook=Label(DataFrameLeft,font=("arial",12,"bold"),text="Days on Book",padx=2,pady=2,bg="powder blue")
        lblDaysonBook.grid(row=5,column=2,sticky=W)
        textDaysonBook=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.daysonbook,width=30)
        textDaysonBook.grid(row=5,column=3)

        lbllateretuenfine=Label(DataFrameLeft,font=("arial",12,"bold"),text="Late Return Fine",padx=2,pady=2,bg="powder blue")
        lbllateretuenfine.grid(row=6,column=2,sticky=W)
        textlateretuenfine=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.lateratefine_var,width=30)
        textlateretuenfine.grid(row=6,column=3)

        lblDateoverDate=Label(DataFrameLeft,font=("arial",12,"bold"),text="Date over Date",padx=2,pady=2,bg="powder blue")
        lblDateoverDate.grid(row=7,column=2,sticky=W)
        textDateoverDate=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.dateoverdue,width=30)
        textDateoverDate.grid(row=7,column=3)

        lblActualPrice=Label(DataFrameLeft,font=("arial",12,"bold"),text="Actual Price",padx=2,pady=2,bg="powder blue")
        lblActualPrice.grid(row=8,column=2,sticky=W)
        textActualPrice=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.finallprice,width=30)
        textActualPrice.grid(row=8,column=3)

        



        



        
        #DATA FRAME RIGHT
        DataFrameRight=LabelFrame(frame,text="SELECT BOOK",bg="powder blue",fg="green",bd=12,relief="ridge",font=("Times New Roman",12,"bold"))
        DataFrameRight.place(x=1000,y=4,width=220,height=330)
       
        listScrollBar=Scrollbar(DataFrameRight)
        listScrollBar.grid(row=0,column=1,sticky="ns")
        listBooks=["PYTHON BASICS","PYTHON IN DEEP","MODULES IN PYTHON","MACHINE PYTHON","FLUENT PYTHON","PYTHON IN DEEP","MODULES IN PYTHON","MACHINE PYTHON","FLUENT PYTHON","PYTHON IN DEEP","MODULES IN PYTHON","MACHINE PYTHON","FLUENT PYTHON","PYTHON IN DEEP","MODULES IN PYTHON","MACHINE PYTHON","FLUENT PYTHON","ELITE JUNGLE PYTHON",]
        def SelectBook(event=" "):
            value=str(listBox.get(listBox.curselection))
            x=value
            if (x=="PYTHON BASICS"):
                self.bookid_var.set("PB12")
                self.booktitle_var.set("Python Manual")
                self.auther_var.set("Paul verry")
                d1=datetime.datetime.today()
                d2=datetime.timedelta(days=15)
                d3=d1+d2
                self.dateborrowed_var.set()
                self.datedue_var.set(d3)
                self.daysonbook.set(15)
                self.lateratefine_var.set("Rs 50")
                self.dateoverdue.set("NO")
                self.finalprice.set("Rs 100")
            elif(x=="ELITE JUNGLE PYTHON"):
                self.bookid_var.set("ELP012")
                self.booktitle_var.set("Python JUNGLE")
                self.auther_var.set("Paul Junior")
                d1=datetime.datetime.today()
                d2=datetime.timedelta(days=15)
                d3=d1+d2
                self.dateborrowed_var.set()
                self.datedue_var.set(d3)
                self.daysonbook.set(15)
                self.lateratefine_var.set("Rs 50")
                self.dateoverdue.set("NO")
                self.finalprice.set("Rs 180")                


                
        listBox=Listbox(DataFrameRight,font=("arial",11,"bold"),width=20,height=15)
        listBox.bind("<<ListboxSelect>>",SelectBook)
        listBox.grid(row=0,column=0,padx=4)
        listScrollBar.config(command=listBox.yview)
        for item in listBooks:
            listBox.insert(END,item)



        
        #BUTTONS
        Framebutton=Frame(self.root,bd=12,relief="ridge",padx=20,bg="powder blue")
        Framebutton.place(x=0,y=500,width=1365,height=60)
        btnAddData=Button (Framebutton, command=self.adda_data,text="Add Data", font=("arial", 12, "bold"), width=70, bg="blue", fg="white")
        btnAddData.grid(row=0,column=0)
        
        btnAddData=Button (Framebutton, text="Exit", font=("arial", 12, "bold"), width=50,bg="blue", fg="white")
        btnAddData.grid(row=0,column=1)
        #INFORMATION FRAME
        FrameDetails=Frame(self.root,bd=12,relief="ridge",padx=20,bg="powder blue")
        FrameDetails.place(x=0,y=560,width=1365,height=130)
        Table_frame=Frame(FrameDetails,bd=6,relief="ridge",bg="powder blue")
        Table_frame.place(x=0,y=2,width=1310,height=100)
        xscroll=ttk.Scrollbar(Table_frame,orient=HORIZONTAL)
        yscroll=ttk.Scrollbar(Table_frame,orient=VERTICAL)




        self.library_table=ttk.Treeview(Table_frame, column=("memebertype","prnno", "title","firtname", "lastname", "adress1", "adress2","postid","mobile", "bookid", "booktitle","auther","dateborrowed", "datedue", "days","latereturnfine", "dateoverdue", "finalprice"),xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
        xscroll.pack(side=BOTTOM, fill=X)
        yscroll.pack(side=RIGHT, fill=Y)
        xscroll.config(command=self.library_table.xview)
        yscroll.config(command=self.library_table.yview)
        self.library_table.heading("memebertype", text="Member Type")
        self.library_table.heading("prnno", text="PRN No." )
        self.library_table.heading("title", text="Title")
        self.library_table.heading("firtname", text="First Name")
        self.library_table.heading("lastname", text="Last Name")
        self.library_table.heading("adress1", text="Address1")
        self.library_table.heading("adress2", text="Address2")
        self.library_table.heading("postid", text="Post ID")
        self.library_table.heading("mobile", text="Mobile Number")
        self.library_table.heading("bookid", text="Book ID")
        self.library_table.heading("booktitle", text="Book Title")
        self.library_table.heading("auther", text="Auther")
        self.library_table.heading("dateborrowed", text="Date Of Borrowed")
        self.library_table.heading("datedue", text="Date Due")
        self.library_table.heading("days", text="DaysOnBook")
        self.library_table.heading("latereturnfine", text="LateReturnFine")
        self.library_table.heading("dateoverdue", text="DateOverDue")
        self.library_table.heading("finalprice", text="Final Price")
        self.library_table["show"]="headings"
        self.library_table.pack(fill=BOTH, expand=1)
        self.library_table.column("memebertype", width=10)
        self.library_table.column("prnno", width=10)
        self.library_table.column("title", width=10)
        self.library_table.column("firtname", width=10)
        self.library_table.column("lastname", width=10)
        self.library_table.column("adress1", width=10)
        self.library_table.column("adress2", width=10)
        self.library_table.column("postid", width=10)
        self.library_table.column("mobile", width=10)
        self.library_table.column("bookid", width=10)
        self.library_table.column("booktitle", width=10)
        self.library_table.column("auther", width=10)
        self.library_table.column("dateborrowed", width=10)
        self.library_table.column("datedue", width=10)
        self.library_table.column("days", width=10)
        self.library_table.column("latereturnfine", width=10)
        self.library_table.column("dateoverdue", width=10)
        self.library_table.column("finalprice", width=10)
        self.member_var=StringVar()
        self.fatch_data()
        self.library_table.bind("<<>ButtonRelease-1>",self.get_cursor)
    def adda_data(self):
        conn=mysql.connector.connect(host="localhost", username="root", password="LFCOMP@105", database="librarymanagementsystem")
        my_cursor=conn.cursor()
        my_cursor.execute("insert into library values(%s, %s, %s, %s, %s, %s %s, %s, %s, %s, %s,%s,, %s, %s %s, %s, %s, %s,)",(self.member_var.get(),self.prn_var.get(),self.id_var.get(),self.firstname_var.get(),self.lastname_var.get(),self.address1_var.get(),self.address2_var.get(),self.postcode_var.get(),self.mobile_var.get(),self.bookid_var.get(),self.booktitle_var.get(),self.auther_var.get(),self.dateborrowed_var.get(),self.datedue_var.get(),self.daysonbook.get(),self.lateratefine_var.get(),self.dateoverdue.get(),self.finallprice.get()))
        conn.commit()
        
        self.fatch_data()
        conn.close()
        #messegebox.showinfo("SUCCESS","MEMBER HAS BEEN INSETED SUCCESFULLY")
    def fatch_data(self):
        conn=mysql.connector.connect(host="localhost",username="root",password="LFCOMP@105",database="librarymanagementsystem")
        my_cursor=conn.cursor()
        my_cursor.execute("select * from newlibrary")
        rows=my_cursor.fetchall()
        if len(rows)!=0:
            self.library_table.delete(* self.library_table.get_children)
            for i in rows:
                self.library_table.insert("",END,values=i)
            conn.commit()
        conn.close()
    def get_cursor(self,event=""):
        cursor_row=self.library_table.focus()
        content=self.library_table_itrm(cursor_row)
        row=content["values"]
        self.member_var.set(row[0]),self.prn_var.set(row[1]),self.id_var.set(row[2]),self.firstname_var.set(row[3]),self.lastname_var.set(row[4]),self.address1_var.set(row[5]),self.address2_var.set(row[6]),self.postcode_var.set(row[7]),self.mobile_var.set(row[8]),self.bookid_var.set(row[9]),self.booktitle_var.set(row[10]),self.auther_var.set(row[11]),self.dateborrowed_var.set(row[12]),self.datedue_var.set(row[13]),self.daysonbook.set(row[14]),self.lateratefine_var.set(row[15]),self.dateoverdue.set(row[16]),self.finallprice.set(row[17])
        
        
 
if __name__ == "__main__":
    root = Tk()
    obj = LibraryManagementSystem(root)
    root.mainloop()


from tkinter import *
from tkinter import ttk
import mysql.connector
import datetime
#from tkinter import messegebox
 
class LibraryManagementSystem:
    def __init__(self, root):
        self.root = root
        self.root.title("Library Management System")
        self.root.geometry("1400x700+0+0")
        self.member_var=StringVar()
        self.prn_var=StringVar()
        self.id_var=StringVar()
        self.firstname_var=StringVar()
        self.lastname_var=StringVar()
        self.address1_var=StringVar()
        self.address2_var=StringVar()
        self.postcode_var=StringVar()
        self.mobile_var=StringVar()
        self.bookid_var=StringVar()
        self.booktitle_var=StringVar()
        self.auther_var=StringVar()
        self.dateborrowed_var=StringVar()
        self.datedue_var=StringVar()
        self.daysonbook=StringVar()
        self.lateratefine_var=StringVar()
        self.dateoverdue=StringVar()
        self.finallprice=StringVar()
        
        lbltitle=Label(self.root,text="LIBRARY MANGEMENT SYSTEM",bg="powder blue",fg="green",bd=20,relief="ridge",font=("Times New Roman",50,"bold"),padx=2,pady=6)
        lbltitle.pack(side=TOP,fill=X)
        frame=Frame(self.root,bd=12,relief="ridge",padx=20,bg="powder blue")
        frame.place(x=0,y=130,width=1365,height=370)
        #DATA FRAME LEFT
        DataFrameLeft=LabelFrame(frame,text="LIBRARY MEMBERSHIP INFORMATION",bg="powder blue",fg="green",bd=12,relief="ridge",font=("Times New Roman",12,"bold"))
        DataFrameLeft.place(x=0,y=5,width=720,height=330)
        
        lblmember=Label(DataFrameLeft,bg="powder blue",text="MEMBER TYPE",font=("Times New Roman",15,"bold"),padx=2,pady=6)
        lblmember.grid(row=0,column=0,sticky=W)
        comMember=ttk.Combobox(DataFrameLeft,font=("Times New Roman",15,"bold"),width=19,textvariable=self.member_var,state="readonly")
        comMember["value"]=("ADMIN STAFF","STUDENT","LECTURER")
        comMember.current(0)
        comMember.grid(row=0,column=1)
        
        lblPRN_no=Label(DataFrameLeft,font=("arial",12,"bold"),text="PRN NO.",padx=2,pady=2,bg="powder blue")
        lblPRN_no.grid(row=1,column=0,sticky=W)
        textPRN_no=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.prn_var,width=23)
        textPRN_no.grid(row=1,column=1)

        lblTitle=Label(DataFrameLeft,font=("arial",12,"bold"),text="ID NO.",padx=2,pady=2,bg="powder blue")
        lblTitle.grid(row=2,column=0,sticky=W)
        textTitle=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.id_var,width=23)
        textTitle.grid(row=2,column=1)

        lblFirstName=Label(DataFrameLeft,font=("arial",12,"bold"),text="First Name",padx=2,pady=2,bg="powder blue")
        lblFirstName.grid(row=3,column=0,sticky=W)
        textFirstName=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.firstname_var,width=23)
        textFirstName.grid(row=3,column=1)

        lblLastName=Label(DataFrameLeft,font=("arial",12,"bold"),text="Last Name",padx=2,pady=2,bg="powder blue")
        lblLastName.grid(row=4,column=0,sticky=W)
        textLastName=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.lastname_var,width=23)
        textLastName.grid(row=4,column=1)

        lblAddress1=Label(DataFrameLeft,font=("arial",12,"bold"),text="Address 1",padx=2,pady=2,bg="powder blue")
        lblAddress1.grid(row=5,column=0,sticky=W)
        textAddress1=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.address1_var,width=23)
        textAddress1.grid(row=5,column=1)

        lblAddress2=Label(DataFrameLeft,font=("arial",12,"bold"),text="Address 2",padx=2,pady=2,bg="powder blue")
        lblAddress2.grid(row=6,column=0,sticky=W)
        textAddress2=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.address2_var,width=23)
        textAddress2.grid(row=6,column=1)

        lblPostcode=Label(DataFrameLeft,font=("arial",12,"bold"),text=" Post Code",padx=2,pady=2,bg="powder blue")
        lblPostcode.grid(row=7,column=0,sticky=W)
        textPostcode=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.postcode_var,width=23)
        textPostcode.grid(row=7,column=1)

        lblMobile=Label(DataFrameLeft,font=("arial",12,"bold"),text=" Mobile No.",padx=2,pady=2,bg="powder blue")
        lblMobile.grid(row=8,column=0,sticky=W)
        textMobile=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.mobile_var,width=23)
        textMobile.grid(row=8,column=1)


        lblBookid=Label(DataFrameLeft,font=("arial",12,"bold"),text="Book Id.",padx=2,pady=2,bg="powder blue")
        lblBookid.grid(row=0,column=2,sticky=W)
        textBookid=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.bookid_var,width=20)
        textBookid.grid(row=0,column=3)

        lblBooktitle=Label(DataFrameLeft,font=("arial",12,"bold"),text="Book Title",padx=2,pady=2,bg="powder blue")
        lblBooktitle.grid(row=1,column=2,sticky=W)
        textBooktitle=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.booktitle_var,width=20)
        textBooktitle.grid(row=1,column=3)
        
        lblAuther=Label(DataFrameLeft,font=("arial",12,"bold"),text="Auther Name",padx=2,pady=2,bg="powder blue")
        lblAuther.grid(row=2,column=2,sticky=W)
        textAuther=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.auther_var,width=20)
        textAuther.grid(row=2,column=3)

        lblDateBorrowed=Label(DataFrameLeft,font=("arial",12,"bold"),text="Date Borrowed ",padx=2,pady=2,bg="powder blue")
        lblDateBorrowed.grid(row=3,column=2,sticky=W)
        textDateBorrowed=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.dateborrowed_var,width=20)
        textDateBorrowed.grid(row=3,column=3)

        lblDateDue=Label(DataFrameLeft,font=("arial",12,"bold"),text="Date Due: ",padx=2,pady=2,bg="powder blue")
        lblDateDue.grid(row=4,column=2,sticky=W)
        textDateDue=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.datedue_var,width=20)
        textDateDue.grid(row=4,column=3)

        lblDaysonBook=Label(DataFrameLeft,font=("arial",12,"bold"),text="Days on Book",padx=2,pady=2,bg="powder blue")
        lblDaysonBook.grid(row=5,column=2,sticky=W)
        textDaysonBook=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.daysonbook,width=20)
        textDaysonBook.grid(row=5,column=3)

        lbllateretuenfine=Label(DataFrameLeft,font=("arial",12,"bold"),text="Late Return Fine",padx=2,pady=2,bg="powder blue")
        lbllateretuenfine.grid(row=6,column=2,sticky=W)
        textlateretuenfine=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.lateratefine_var,width=20)
        textlateretuenfine.grid(row=6,column=3)

        lblDateoverDate=Label(DataFrameLeft,font=("arial",12,"bold"),text="Date over Date",padx=2,pady=2,bg="powder blue")
        lblDateoverDate.grid(row=7,column=2,sticky=W)
        textDateoverDate=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.dateoverdue,width=20)
        textDateoverDate.grid(row=7,column=3)

        lblActualPrice=Label(DataFrameLeft,font=("arial",12,"bold"),text="Actual Price",padx=2,pady=2,bg="powder blue")
        lblActualPrice.grid(row=8,column=2,sticky=W)
        textActualPrice=Entry(DataFrameLeft,font=("arial",13,"bold"),textvariable=self.finallprice,width=20)
        textActualPrice.grid(row=8,column=3)

        



        



        
        #DATA FRAME RIGHT
        DataFrameRight=LabelFrame(frame,text="BOOK DETAILS",bg="powder blue",fg="green",bd=12,relief="ridge",font=("Times New Roman",12,"bold"))
        DataFrameRight.place(x=800,y=4,width=500,height=330)
        self.txtBox=Text(DataFrameRight,font=("arial",12,"bold"),width=27,height=14,padx=6)
        self.txtBox.grid(row=0,column=2)
        listScrollBar=Scrollbar(DataFrameRight)
        listScrollBar.grid(row=0,column=1,sticky="ns")
        listBooks=["PYTHON BASICS","PYTHON IN DEEP","MODULES IN PYTHON","MACHINE PYTHON","FLUENT PYTHON","ELITE JUNGLE PYTHON"]
        def SelectBook(event=""):
            value=str(listBox.get(listBox.curselection))
            x=value
            if (x=="PYTHON BASICS"):
                self.bookid_var.set("PB12")
                self.booktitle_var.set("Python Manual")
                self.auther_var.set("Paul verry")
                d1=datetime.datetime.today()
                d2=datetime.timedelta(days=15)
                d3=d1+d2
                self.dateborrowed_var.set()
                self.datedue_var.set(d3)
                self.daysonbook.set(15)
                self.lateratefine_var.set("Rs 50")
                self.dateoverdue.set("NO")
                self.finalprice.set("Rs 100")
            elif(x=="ELITE JUNGLE PYTHON"):
                self.bookid_var.set("ELP012")
                self.booktitle_var.set("Python JUNGLE")
                self.auther_var.set("Paul Junior")
                d1=datetime.datetime.today()
                d2=datetime.timedelta(days=15)
                d3=d1+d2
                self.dateborrowed_var.set()
                self.datedue_var.set(d3)
                self.daysonbook.set(15)
                self.lateratefine_var.set("Rs 50")
                self.dateoverdue.set("NO")
                self.finalprice.set("Rs 180")                


                
        listBox=Listbox(DataFrameRight,font=("arial",11,"bold"),width=20,height=14)
        listBox.bind("<<ListboxSelect>>",SelectBook)
        listBox.grid(row=0,column=0,padx=4)
        listScrollBar.config(command=listBox.yview)
        for item in listBooks:
            listBox.insert(END,item)



        
        #BUTTONS
        Framebutton=Frame(self.root,bd=12,relief="ridge",padx=20,bg="powder blue")
        Framebutton.place(x=0,y=500,width=1365,height=60)
        btnAddData=Button (Framebutton, command=self.adda_data,text="Add Data", font=("arial", 12, "bold"), width=70, bg="blue", fg="white")
        btnAddData.grid(row=0,column=0)
        
        btnAddData=Button (Framebutton, text="Exit", font=("arial", 12, "bold"), width=50,bg="blue", fg="white")
        btnAddData.grid(row=0,column=1)
        #INFORMATION FRAME
        FrameDetails=Frame(self.root,bd=12,relief="ridge",padx=20,bg="powder blue")
        FrameDetails.place(x=0,y=560,width=1365,height=130)
        Table_frame=Frame(FrameDetails,bd=6,relief="ridge",bg="powder blue")
        Table_frame.place(x=0,y=2,width=1310,height=100)
        xscroll=ttk.Scrollbar(Table_frame,orient=HORIZONTAL)
        yscroll=ttk.Scrollbar(Table_frame,orient=VERTICAL)




        self.library_table=ttk.Treeview(Table_frame, column=("memebertype","prnno", "title","firtname", "lastname", "adress1", "adress2","postid","mobile", "bookid", "booktitle","auther","dateborrowed", "datedue", "days","latereturnfine", "dateoverdue", "finalprice"),xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
        xscroll.pack(side=BOTTOM, fill=X)
        yscroll.pack(side=RIGHT, fill=Y)
        xscroll.config(command=self.library_table.xview)
        yscroll.config(command=self.library_table.yview)
        self.library_table.heading("memebertype", text="Member Type")
        self.library_table.heading("prnno", text="PRN No." )
        self.library_table.heading("title", text="Title")
        self.library_table.heading("firtname", text="First Name")
        self.library_table.heading("lastname", text="Last Name")
        self.library_table.heading("adress1", text="Address1")
        self.library_table.heading("adress2", text="Address2")
        self.library_table.heading("postid", text="Post ID")
        self.library_table.heading("mobile", text="Mobile Number")
        self.library_table.heading("bookid", text="Book ID")
        self.library_table.heading("booktitle", text="Book Title")
        self.library_table.heading("auther", text="Auther")
        self.library_table.heading("dateborrowed", text="Date Of Borrowed")
        self.library_table.heading("datedue", text="Date Due")
        self.library_table.heading("days", text="DaysOnBook")
        self.library_table.heading("latereturnfine", text="LateReturnFine")
        self.library_table.heading("dateoverdue", text="DateOverDue")
        self.library_table.heading("finalprice", text="Final Price")
        self.library_table["show"]="headings"
        self.library_table.pack(fill=BOTH, expand=1)
        self.library_table.column("memebertype", width=10)
        self.library_table.column("prnno", width=10)
        self.library_table.column("title", width=10)
        self.library_table.column("firtname", width=10)
        self.library_table.column("lastname", width=10)
        self.library_table.column("adress1", width=10)
        self.library_table.column("adress2", width=10)
        self.library_table.column("postid", width=10)
        self.library_table.column("mobile", width=10)
        self.library_table.column("bookid", width=10)
        self.library_table.column("booktitle", width=10)
        self.library_table.column("auther", width=10)
        self.library_table.column("dateborrowed", width=10)
        self.library_table.column("datedue", width=10)
        self.library_table.column("days", width=10)
        self.library_table.column("latereturnfine", width=10)
        self.library_table.column("dateoverdue", width=10)
        self.library_table.column("finalprice", width=10)
        self.member_var=StringVar()
        self.library_table.bind("<<>ButtonRelease-1>",self.get_cursor)
    def adda_data(self):
        conn=mysql.connector.connect(host="localhost", username="root", password="LFCOMP@105", database="librarymanagementsystem")
        my_cursor=conn.cursor()
        my_cursor.execute("insert into library values(%s, %s, %s, %s, %s, %s %s, %s, %s, %s, %s,%s,, %s, %s %s, %s, %s, %s,)",(self.member_var.get(),self.prn_var.get(),self.id_var.get(),self.firstname_var.get(),self.lastname_var.get(),self.address1_var.get(),self.address2_var.get(),self.postcode_var.get(),self.mobile_var.get(),self.bookid_var.get(),self.booktitle_var.get(),self.auther_var.get(),self.dateborrowed_var.get(),self.datedue_var.get(),self.daysonbook.get(),self.lateratefine_var.get(),self.dateoverdue.get(),self.finallprice.get()))
        conn.commit()
        conn.close()
        self.fatch_data()
        messegebox.showinfo("SUCCESS","MEMBER HAS BEEN INSETED SUCCESFULLY")
    def fatch_data(self):
        conn=mysql.connector.connect(host="localhost",username="root",password="LFCOMP@105",database="librarymanagementsystem")
        my_cursor=conn.cursor()
        my_cursor.execute("select * from library")
        rows=my_cursor.fetchall()
        if len(rows)!=0:
            self.library_table.delete(*self.library_table.get_children)
            for i in rows:
                self.library_table.insert("",END,values=i)
            conn.commit()
        conn.close()
    def get_cursor(self,event=""):
        cursor_row=self.library_table.focus()
        content=self.library_table_itrm(cursor_row)
        row=content["values"]
        self.member_var.set(row[0]),self.prn_var.set(row[1]),self.id_var.set(row[2]),self.firstname_var.set(row[3]),self.lastname_var.set(row[4]),self.address1_var.set(row[5]),self.address2_var.set(row[6]),self.postcode_var.set(row[7]),self.mobile_var.set(row[8]),self.bookid_var.set(row[9]),self.booktitle_var.set(row[10]),self.auther_var.set(row[11]),self.dateborrowed_var.set(row[12]),self.datedue_var.set(row[13]),self.daysonbook.set(row[14]),self.lateratefine_var.set(row[15]),self.dateoverdue.set(row[16]),self.finallprice.set(row[17])
        
        
 
if __name__ == "__main__":
    root = Tk()
    obj = LibraryManagementSystem(root)
    root.mainloop()

CREATE TABLE 'mydata','library' (

'Member' VARCHAR(40) NOT NULL,

'PRN_NO` VARCHAR(45) NOT NULL,

`ID` VARCHAR(45) NOT NULL,

'FirstName' VARCHAR(45) NULL,

'LastName' VARCHAR(45) NULL,

'Address1' VARCHAR(45) NULL,

'Address2' VARCHAR(45) NULL,

'PostID' VARCHAR(45) NULL,

'Mobile' VARCHAR(45) NULL,

'Bookid VARCHAR(45) NULL,

'Auther' VARCHAR(45) NULL,

'Databorrowed' VARCHAR(45) NULL,

'datedue' VARCHAR(45) NULL,

'dayasofbook' VARCHAR(45) NULL,

'latereturnfine' VARCHAR(45) NULL,

'dateoverdue' VARCHAR(45) NULL,);

p2


def adda_data(self):
conn=mysql.connector.connect(host="localhost", username="root", password="Test@123", database="Mydata")

my_cursor=conn.cursor()

my_cursor.execute("insert into library values(%s, %s, %s, %s, %s, %s %s, %s, %s, %s, %s,%s,, %s, %s %s, %s, %s, %s,)",
(self.member_var.get(),

self.prn_var.get(),

self.id_var.get(),

self.firstname_var.get(),

self.lastname_var.get(),

self.address1_var.get(),

self.address2_var.get(),

self.postcode_var.get(),

self.mobile_var.get(),

self.bookid_var.get(),

self.booktitle_var.get(),

self.auther_var.get(),

self.dateborrowed_var.get(),

self.datedue_var.get(),

self.daysonbook.get(),

self.lateratefine_var.get(),

self.dateoverdue.get(),

self.finallprice.get()))
conn.commit()

conn.close()


p1

self.member_var=StringVar()
self.prn_var=StringVar()
self.id_var=StringVar()
self.firstname_var=StringVar()
self.lastname_var=StringVar()
self.address1_var=StringVar()
self.address2_var=StringVar()
self.postcode_var=StringVar()
self.mobile_var=StringVar()
self.bookid_var=StringVar()
self.booktitle_var=StringVar()
self.auther_var=StringVar()
self.dateborrowed_var=StringVar()
self.datedue_var=StringVar()
self.daysonbook=StringVar()
self.lateratefine_var=StringVar()
self.dateoverdue=StringVar()
self.finallprice=StringVar()