i am trying to create a GUI for marksheet scorecard in which 5 subjects and their marks will be entered and name, regd id and roll no are also asked. on that basis sgpa is calculated. now for five subjects i had to write if elif ladder 5 times bcoz i couldn't use for loop for tkinter.entry type of variable. is there any other way i could optimise the code. if i enter 100 in marks, it is not accepting , if i enter marks in single digit some unwanted result are coming. please help.
import tkinter as tk
# creating a new tkinter window
master = tk.Tk()
# assigning a title
master.title("MARKSHEET")
# specifying geomtery for window size
master.geometry("500x300")
# declaring objects for entering data
s1 = tk.Entry(master)
s2 = tk.Entry(master)
s3 = tk.Entry(master)
s4 = tk.Entry(master)
s5 = tk.Entry(master)
s6 = tk.Entry(master)
s7 = tk.Entry(master)
s8 = tk.Entry(master)
# function to display the total subject
# credits total credits and SGPA according
# to grades entered
def display():
# Varibale to store total marks
tot = 0
g = 's'+'4'
print(type(s4))
# 10*number of subject credits
#for i in range(4,9):
if s4.get() >= "90":
tk.Label(master, text="40").grid(row=3, column=4)
tot +=40
elif s4.get() >= "80":
tk.Label(master, text="36").grid(row=3, column=4)
tot += 36
elif s4.get() >= "70":
tk.Label(master, text="32").grid(row=3, column=4)
tot += 32
elif s4.get() >= "60":
tk.Label(master, text="28").grid(row=3, column=4)
tot += 28
elif s4.get() >= "50":
tk.Label(master, text="24").grid(row=3, column=4)
tot += 24
else:
tk.Label(master, text="0").grid(row=3, column=4)
tot += 0
# Similarly doing with other objects
if s5.get() >= '90':
tk.Label(master, text="40").grid(row=4, column=4)
tot += 40
elif s5.get() >= '80':
tk.Label(master, text="36").grid(row=4, column=4)
tot += 36
elif s5.get() >= '70':
tk.Label(master, text="32").grid(row=4, column=4)
tot += 32
elif s5.get() >= '60':
tk.Label(master, text="28").grid(row=4, column=4)
tot += 28
elif s5.get() >= '50':
tk.Label(master, text="28").grid(row=4, column=4)
tot += 24
else:
tk.Label(master, text="0").grid(row=4, column=4)
tot += 0
if s6.get() >= '90':
tk.Label(master, text="40").grid(row=5, column=4)
tot += 40
elif s6.get() >= '80':
tk.Label(master, text="36").grid(row=5, column=4)
tot += 36
elif s6.get() >= '70':
tk.Label(master, text="32").grid(row=5, column=4)
tot += 32
elif s6.get() >= '60':
tk.Label(master, text="28").grid(row=5, column=4)
tot += 28
elif s6.get() >= '50':
tk.Label(master, text="24").grid(row=5, column=4)
tot += 24
else:
tk.Label(master, text="0").grid(row=5, column=4)
tot += 0
if s7.get() >= '90':
tk.Label(master, text="40").grid(row=6, column=4)
tot += 40
elif s7.get() >= '80':
tk.Label(master, text="36").grid(row=6, column=4)
tot += 36
elif s7.get() >= '70':
tk.Label(master, text="32").grid(row=6, column=4)
tot += 32
elif s7.get() >= '60':
tk.Label(master, text="28").grid(row=6, column=4)
tot += 28
elif s7.get() >= '50':
tk.Label(master, text="24").grid(row=6, column=4)
tot += 24
else:
tk.Label(master, text="0").grid(row=6, column=4)
tot += 0
if s8.get() >= '90':
tk.Label(master, text="40").grid(row=7, column=4)
tot += 40
elif s8.get() >= '80':
tk.Label(master, text="36").grid(row=7, column=4)
tot += 36
elif s8.get() >= '70':
tk.Label(master, text="32").grid(row=7, column=4)
tot += 32
elif s8.get() >= '60':
tk.Label(master, text="28").grid(row=7, column=4)
tot += 28
elif s8.get() >= '50':
tk.Label(master, text="24").grid(row=7, column=4)
tot += 24
else:
tk.Label(master, text="0").grid(row=7, column=4)
tot += 0
# print(total)
# to display total credits
tk.Label(master, text=str(tot)).grid(row=8, column=4)
# to display SGPA
tk.Label(master, text=str(tot / 20)).grid(row=9, column=4)
# end of display function
# label to enter name
tk.Label(master, text="Name").grid(row=0, column=0)
# label for registration number
tk.Label(master, text="Reg.No").grid(row=0, column=3)
# label for roll Number
tk.Label(master, text="Roll.No").grid(row=1, column=0)
# labels for serial numbers
tk.Label(master, text="Sr.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="5").grid(row=7, column=0)
# labels for subject codes
tk.Label(master, text="Subject").grid(row=2, column=1)
tk.Label(master, text="PPS").grid(row=3, column=1)
tk.Label(master, text="MATH").grid(row=4, column=1)
tk.Label(master, text="CHEMISTRY").grid(row=5, column=1)
tk.Label(master, text="PHYSICS").grid(row=6, column=1)
tk.Label(master, text="MECHANICS").grid(row=7, column=1)
# label for grades
tk.Label(master, text="MARKS").grid(row=2, column=2)
s4.grid(row=3, column=2)
s5.grid(row=4, column=2)
s6.grid(row=5, column=2)
s7.grid(row=6, column=2)
s8.grid(row=7, column=2)
# labels for subject credits
tk.Label(master, text="Subject 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="4").grid(row=5, column=3)
tk.Label(master, text="4").grid(row=6, column=3)
tk.Label(master, text="4").grid(row=7, column=3)
tk.Label(master, text="Credit obtained").grid(row=2, column=4)
# taking entries of name, reg, roll number respectively
s1 = tk.Entry(master)
s2 = tk.Entry(master)
s3 = tk.Entry(master)
# organizing them in the grid
s1.grid(row=0, column=1)
s2.grid(row=0, column=4)
s3.grid(row=1, column=1)
# button to display all the calculated credit scores and sgpa
button1 = tk.Button(master, text="submit", bg="green", command=display)
button1.grid(row=9, column=1)
tk.Label(master, text="Total credit").grid(row=8, column=3)
tk.Label(master, text="SGPA").grid(row=9, column=3)
master.mainloop()
this is the code please try and provide me with the changes that i can make. THANKS for the help