Python to CGPA Calculator using Tkinter with Full Source Code For Beginners

Python CGPA Calculator with GUI Tkinter.

Source Code:

main.py

from tkinter import * from tkinter import messagebox from matplotlib.pyplot import text class App: def __init__(self, parent): self.parent = parent self.frame_1 = Frame(parent) self.frame_1.pack() self.lbl_1 = Label(self.frame_1, text="Current CGPA :") self.lbl_1.grid(row=0, column=0) self.entry_1 = Entry(self.frame_1) self.entry_1.grid(row=0, column=1) self.lbl_2 = Label(self.frame_1, text="Units Completed :") self.lbl_2.grid(row=1, column=0) self.entry_2 = Entry(self.frame_1) self.entry_2.grid(row=1, column=1) self.lbl_3 = Label(self.frame_1, text="Number of Courses to add :") self.lbl_3.grid(row=2, column=0) self.entry_3 = Entry(self.frame_1) self.entry_3.grid(row=2, column=1) self.btn_1 = Button(parent, text="Add Courses !", command=self.add_courses) self.btn_1.pack(pady=8) self.frame_2 = Frame(parent) self.frame_2.pack() def add_courses(self): if ((self.entry_3.get() != '') & (self.entry_3.get().isdigit())): self.num_courses = int(self.entry_3.get()) self.grades_list = [] self.units_list = [] self.lbl_units = Label(self.frame_2, text="Units :") self.lbl_units.grid(row=0, column=0) self.lbl_grades = Label(self.frame_2, text="Grades :") self.lbl_grades.grid(row=0, column=1) for i in range(0, self.num_courses): self.units_list.append( Spinbox(self.frame_2, values=(1, 2, 3, 4, 5, 20))) self.units_list[i].grid(row=i+1, column=0, padx=10, pady=10) self.grades_list.append(Spinbox(self.frame_2, values=( "A", "A-", "B", "B-", "C", "C-", "D", "E"))) self.grades_list[i].grid(row=i+1, column=1, padx=10, pady=10) self.btn_calcCG = Button( self.parent, text="Calculate CGPA", command=self.calc_CG) self.btn_calcCG.pack(pady=8) self.btn_1.config(state=DISABLED) else: messagebox.showinfo("Hey ! ", "Enter a Valid Value") def calc_CG(self): print("Calculating !") credits_this_sem = 0 units_this_sem = 0 for j in range(0, self.num_courses): credits_this_sem = credits_this_sem + \ int(self.units_list[j].get()) * \ (self.grade(self.grades_list[j].get())) units_this_sem = units_this_sem + int(self.units_list[j].get()) final_cgpa = (credits_this_sem + float(self.entry_1.get()) * int(self.entry_2.get())) / (units_this_sem+int(self.entry_2.get())) messagebox.showinfo("Predicted CGPA ", str(final_cgpa)) def grade(self, grd): dict_ = {'A': 10, 'A-': 9, 'B': 8, 'B-': 7, 'C': 6, 'C-': 5, 'D': 4, 'E': 2} return dict_[grd] root = Tk() root.title("ProgramSolve.com") app = App(root) root.mainloop()

Output:

Leave a Comment