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

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

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

btnAddData=Button (Framebutton, text="Update", font=("arial", 12, "bold"), width=23,bg="blue", fg="white")
btnAddData.grid(row=0,column=2)

btnAddData=Button (Framebutton, text="Delete", font=("arial", 12, "bold"), width=23,bg="blue",fg="white")
btnAddData.grid(row=0,column=3)

btnAddData=Button (Framebutton, text="Reset", font=("arial", 12, "bold"), width=23,bg="blue", fg="white") btnAddData.grid(row=0,column=4)

btnAddData=Button (Framebutton, text="Exit", font=("arial", 12, "bold"), width=23,bg="blue", fg="white") btnAddData.grid(row=0,column=5)
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, yuscrollcommand=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.xview)


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=100)
self.library_table.column("prnno", width=100)
self.library_table.column("title", width=100)
self.library_table.column("firtname", width=100)
self.library_table.column("lastname", width=100)
self.library_table.column("adress1", width=100)
self.library_table.column("adress2", width=100)
self.library_table.column("postid", width=100)
self.library_table.column("mobile", width=100)
self.library_table.column("bookid", width=100)
self.library_table.column("booktitle", width=100)
self.library_table.column("auther", width=100)
self.library_table.column("dateborrowed", width=100)
self.library_table.column("datedue", width=100)
self.library_table.column("days", width=100)
self.library_table.column("latereturnfine", width=100)
self.library_table.column("dateoverdue", width=100)
self.library_table.column("finalprice", width=100)

Corrected Code

from tkinter import *

class LibraryManagementSystem:
    def __init__(self, root):
        self.root = root
        self.root.title("Library Management System")
        self.root.geometry("1550x800+0+0")

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

Annual Project

import tkinter as tk

def update_scores():
    # Get Team A information
    team_a_name = entry_team_a_name.get()
    team_a_runs = int(entry_team_a_runs.get())
    team_a_wickets = int(entry_team_a_wickets.get())

    # Get Team B information
    team_b_name = entry_team_b_name.get()
    team_b_runs = int(entry_team_b_runs.get())
    team_b_wickets = int(entry_team_b_wickets.get())

    # Get additional information
    current_bowler = entry_current_bowler.get()
    striker = entry_striker.get()
    non_striker = entry_non_striker.get()
    total_runs = team_a_runs if team_a_name == "Team A" else team_b_runs
    total_wickets = team_a_wickets if team_a_name == "Team A" else team_b_wickets
    overs_passed = float(entry_overs_passed.get())
    run_rate = 0.0 if overs_passed == 0 else total_runs / overs_passed

    # Update labels with the entered values
    label_team_a.config(text=f"{team_a_name}   |   Runs: {team_a_runs}   |   Wickets: {team_a_wickets}", bg='lightblue', font=('Arial', 12))
    label_team_b.config(text=f"{team_b_name}   |   Runs: {team_b_runs}   |   Wickets: {team_b_wickets}", bg='lightgreen', font=('Arial', 12))
    label_current_bowler.config(text=f"Current Bowler: {current_bowler}", font=('Arial', 10))
    label_striker.config(text=f"Striker: {striker}", font=('Arial', 10))
    label_non_striker.config(text=f"Non Striker: {non_striker}", font=('Arial', 10))
    label_total_runs_wickets.config(text=f"Total Runs: {total_runs}   |   Total Wickets: {total_wickets}", font=('Arial', 10))
    label_overs_passed.config(text=f"Overs Passed: {overs_passed}", font=('Arial', 10))
    label_run_rate.config(text=f"Run Rate: {run_rate:.2f}", font=('Arial', 10))

root = tk.Tk()
root.title("Cricket Scoreboard")

# Team entries
frame_teams = tk.Frame(root)
frame_teams.pack()

label_team_a_name = tk.Label(frame_teams, text="Team A:", font=('Arial', 12))
label_team_a_name.grid(row=0, column=0)
entry_team_a_name = tk.Entry(frame_teams)
entry_team_a_name.grid(row=0, column=1)

label_team_a_runs = tk.Label(frame_teams, text="Runs:", font=('Arial', 12))
label_team_a_runs.grid(row=1, column=0)
entry_team_a_runs = tk.Entry(frame_teams)
entry_team_a_runs.grid(row=1, column=1)

label_team_a_wickets = tk.Label(frame_teams, text="Wickets:", font=('Arial', 12))
label_team_a_wickets.grid(row=2, column=0)
entry_team_a_wickets = tk.Entry(frame_teams)
entry_team_a_wickets.grid(row=2, column=1)

label_team_b_name = tk.Label(frame_teams, text="Team B:", font=('Arial', 12))
label_team_b_name.grid(row=0, column=2)
entry_team_b_name = tk.Entry(frame_teams)
entry_team_b_name.grid(row=0, column=3)

label_team_b_runs = tk.Label(frame_teams, text="Runs:", font=('Arial', 12))
label_team_b_runs.grid(row=1, column=2)
entry_team_b_runs = tk.Entry(frame_teams)
entry_team_b_runs.grid(row=1, column=3)

label_team_b_wickets = tk.Label(frame_teams, text="Wickets:", font=('Arial', 12))
label_team_b_wickets.grid(row=2, column=2)
entry_team_b_wickets = tk.Entry(frame_teams)
entry_team_b_wickets.grid(row=2, column=3)

# Additional information entries
frame_additional_info = tk.Frame(root)
frame_additional_info.pack()

label_current_bowler = tk.Label(frame_additional_info, text="Current Bowler:", font=('Arial', 12))
label_current_bowler.grid(row=0, column=0)
entry_current_bowler = tk.Entry(frame_additional_info)
entry_current_bowler.grid(row=0, column=1)

label_striker = tk.Label(frame_additional_info, text="Striker:", font=('Arial', 12))
label_striker.grid(row=1, column=0)
entry_striker = tk.Entry(frame_additional_info)
entry_striker.grid(row=1, column=1)

label_non_striker = tk.Label(frame_additional_info, text="Non Striker:", font=('Arial', 12))
label_non_striker.grid(row=2, column=0)
entry_non_striker = tk.Entry(frame_additional_info)
entry_non_striker.grid(row=2, column=1)

label_overs_passed = tk.Label(frame_additional_info, text="Overs Passed:", font=('Arial', 12))
label_overs_passed.grid(row=3, column=0)
entry_overs_passed = tk.Entry(frame_additional_info)
entry_overs_passed.grid(row=3, column=1)

# Update button
update_button = tk.Button(root, text="Update Scores", command=update_scores, bg='orange', fg='white', font=('Arial', 12))
update_button.pack()

# Labels for information display
label_team_a = tk.Label(root, text="Team A   |   Runs: 0   |   Wickets: 0", bg='lightblue', font=('Arial', 12))
label_team_a.pack()

label_team_b = tk.Label(root, text="Team B   |   Runs: 0   |   Wickets: 0", bg='lightgreen', font=('Arial', 12))
label_team_b.pack()

label_current_bowler = tk.Label(root, text="Current Bowler: ", font=('Arial', 10))
label_current_bowler.pack()

label_striker = tk.Label(root, text="Striker: ", font=('Arial', 10))
label_striker.pack()

label_non_striker = tk.Label(root, text="Non Striker: ", font=('Arial', 10))
label_non_striker.pack()

label_total_runs_wickets = tk.Label(root, text="Total Runs: 0   |   Total Wickets: 0", font=('Arial', 10))
label_total_runs_wickets.pack()

label_overs_passed = tk.Label(root, text="Overs Passed: 0.0", font=('Arial', 10))
label_overs_passed.pack()

label_run_rate = tk.Label(root, text="Run Rate: 0.0", font=('Arial', 10))
label_run_rate.pack()

root.mainloop()

Annual Exam Project Computer

import tkinter as tkdef update_scores():    # Get Team A information    team_a_name = entry_team_a_name.get()    team_a_runs = int(entry_team_a_runs.get())    team_a_wickets = int(entry_team_a_wickets.get())    # Get Team B information    team_b_name = entry_team_b_name.get()    team_b_runs = int(entry_team_b_runs.get())    team_b_wickets = int(entry_team_b_wickets.get())    # Get additional information    current_bowler = entry_current_bowler.get()    striker = entry_striker.get()    non_striker = entry_non_striker.get()    total_runs = team_a_runs if team_a_name == "Team A" else team_b_runs    total_wickets = team_a_wickets if team_a_name == "Team A" else team_b_wickets    overs_passed = float(entry_overs_passed.get())    run_rate = 0.0 if overs_passed == 0 else total_runs / overs_passed    # Update labels with the entered values    label_team_a.config(text=f"{team_a_name}   |   Runs: {team_a_runs}   |   Wickets: {team_a_wickets}", bg='lightblue', font=('Arial', 12))    label_team_b.config(text=f"{team_b_name}   |   Runs: {team_b_runs}   |   Wickets: {team_b_wickets}", bg='lightgreen', font=('Arial', 12))    label_current_bowler.config(text=f"Current Bowler: {current_bowler}", font=('Arial', 10))    label_striker.config(text=f"Striker: {striker}", font=('Arial', 10))    label_non_striker.config(text=f"Non Striker: {non_striker}", font=('Arial', 10))    label_total_runs_wickets.config(text=f"Total Runs: {total_runs}   |   Total Wickets: {total_wickets}", font=('Arial', 10))    label_overs_passed.config(text=f"Overs Passed: {overs_passed}", font=('Arial', 10))    label_run_rate.config(text=f"Run Rate: {run_rate:.2f}", font=('Arial', 10))root = tk.Tk()root.title("Cricket Scoreboard")# Team entriesframe_teams = tk.Frame(root)frame_teams.pack()label_team_a_name = tk.Label(frame_teams, text="Team A:", font=('Arial', 12))label_team_a_name.grid(row=0, column=0)entry_team_a_name = tk.Entry(frame_teams)entry_team_a_name.grid(row=0, column=1)label_team_a_runs = tk.Label(frame_teams, text="Runs:", font=('Arial', 12))label_team_a_runs.grid(row=1, column=0)entry_team_a_runs = tk.Entry(frame_teams)entry_team_a_runs.grid(row=1, column=1)label_team_a_wickets = tk.Label(frame_teams, text="Wickets:", font=('Arial', 12))label_team_a_wickets.grid(row=2, column=0)entry_team_a_wickets = tk.Entry(frame_teams)entry_team_a_wickets.grid(row=2, column=1)label_team_b_name = tk.Label(frame_teams, text="Team B:", font=('Arial', 12))label_team_b_name.grid(row=0, column=2)entry_team_b_name = tk.Entry(frame_teams)entry_team_b_name.grid(row=0, column=3)label_team_b_runs = tk.Label(frame_teams, text="Runs:", font=('Arial', 12))label_team_b_runs.grid(row=1, column=2)entry_team_b_runs = tk.Entry(frame_teams)entry_team_b_runs.grid(row=1, column=3)label_team_b_wickets = tk.Label(frame_teams, text="Wickets:", font=('Arial', 12))label_team_b_wickets.grid(row=2, column=2)entry_team_b_wickets = tk.Entry(frame_teams)entry_team_b_wickets.grid(row=2, column=3)# Additional information entriesframe_additional_info = tk.Frame(root)frame_additional_info.pack()label_current_bowler = tk.Label(frame_additional_info, text="Current Bowler:", font=('Arial', 12))label_current_bowler.grid(row=0, column=0)entry_current_bowler = tk.Entry(frame_additional_info)entry_current_bowler.grid(row=0, column=1)label_striker = tk.Label(frame_additional_info, text="Striker:", font=('Arial', 12))label_striker.grid(row=1, column=0)entry_striker = tk.Entry(frame_additional_info)entry_striker.grid(row=1, column=1)label_non_striker = tk.Label(frame_additional_info, text="Non Striker:", font=('Arial', 12))label_non_striker.grid(row=2, column=0)entry_non_striker = tk.Entry(frame_additional_info)entry_non_striker.grid(row=2, column=1)label_overs_passed = tk.Label(frame_additional_info, text="Overs Passed:", font=('Arial', 12))label_overs_passed.grid(row=3, column=0)entry_overs_passed = tk.Entry(frame_additional_info)entry_overs_passed.grid(row=3, column=1)# Update buttonupdate_button = tk.Button(root, text="Update Scores", command=update_scores, bg='orange', fg='white', font=('Arial', 12))update_button.pack()# Labels for information displaylabel_team_a = tk.Label(root, text="Team A   |   Runs: 0   |   Wickets: 0", bg='lightblue', font=('Arial', 12))label_team_a.pack()label_team_b = tk.Label(root, text="Team B   |   Runs: 0   |   Wickets: 0", bg='lightgreen', font=('Arial', 12))label_team_b.pack()label_current_bowler = tk.Label(root, text="Current Bowler: ", font=('Arial', 10))label_current_bowler.pack()label_striker = tk.Label(root, text="Striker: ", font=('Arial', 10))label_striker.pack()label_non_striker = tk.Label(root, text="Non Striker: ", font=('Arial', 10))label_non_striker.pack()label_total_runs_wickets = tk.Label(root, text="Total Runs: 0   |   Total Wickets: 0", font=('Arial', 10))label_total_runs_wickets.pack()label_overs_passed = tk.Label(root, text="Overs Passed: 0.0", font=('Arial', 10))label_overs_passed.pack()label_run_rate = tk.Label(root, text="Run Rate: 0.0", font=('Arial', 10))label_run_rate.pack()root.mainloop()