import tkinter as tk

master = tk.Tk()
master.title("MARKSHEET")
master.geometry("700x250")

# Entry fields for input
e1 = tk.Entry(master)
e2 = tk.Entry(master)
e3 = tk.Entry(master)
e4 = tk.Entry(master)
e5 = tk.Entry(master)
e6 = tk.Entry(master)
e7 = tk.Entry(master)

def display():
    tot = 0
    # Assigning grades to marks
    grade_mapping = {"A": 40, "B": 36, "C": 32, "D": 28, "P": 24, "F": 0}
    
    for idx, entry in enumerate([e4, e5, e6, e7], start=3):
        grade = entry.get()
        if grade in grade_mapping:
            mark = grade_mapping[grade]
            tk.Label(master, text=str(mark)).grid(row=idx, column=4)
            tot += mark
        else:
            tk.Label(master, text="Invalid Grade").grid(row=idx, column=4)

    # Display total marks and SGPA
    tk.Label(master, text="Total Marks").grid(row=7, column=3)
    tk.Label(master, text=str(tot)).grid(row=7, column=4)
    tk.Label(master, text="SGPA").grid(row=8, column=3)
    tk.Label(master, text=str(tot / 15)).grid(row=8, column=4)

# Labels and grid layout
tk.Label(master, text="Name").grid(row=0, column=0)
tk.Label(master, text="Reg.No").grid(row=0, column=3)
tk.Label(master, text="Roll.No").grid(row=1, column=0)
tk.Label(master, text="Srl.No").grid(row=2, column=0)

tk.Label(master, text="1").grid(row=3, column=0)
tk.Label(master, text="2").grid(row=4, column=0)
tk.Label(master, text="3").grid(row=5, column=0)
tk.Label(master, text="4").grid(row=6, column=0)

tk.Label(master, text="Subject").grid(row=2, column=1)
tk.Label(master, text="PYTHON").grid(row=3, column=1)
tk.Label(master, text="JAVA").grid(row=4, column=1)
tk.Label(master, text="HTML").grid(row=5, column=1)
tk.Label(master, text="OOPS").grid(row=6, column=1)

tk.Label(master, text="Grade").grid(row=2, column=2)
e4.grid(row=3, column=2)
e5.grid(row=4, column=2)
e6.grid(row=5, column=2)
e7.grid(row=6, column=2)

tk.Label(master, text="Sub Credit").grid(row=2, column=3)
tk.Label(master, text="4").grid(row=3, column=3)
tk.Label(master, text="4").grid(row=4, column=3)
tk.Label(master, text="3").grid(row=5, column=3)
tk.Label(master, text="4").grid(row=6, column=3)

tk.Label(master, text="Credit obtained").grid(row=2, column=4)

# Name, Reg, Roll number entries
e1.grid(row=0, column=1)
e2.grid(row=0, column=4)
e3.grid(row=1, column=1)

# Submit button to calculate the result
button1 = tk.Button(master, text="Submit", bg="green", command=display)
button1.grid(row=8, column=1)

master.mainloop()