Python Tkinter Student Registration and Login Form Management System Using MySQL Database GUI Desktop App Full Project With Source Code For Beginners

Python Tkinter Student Registration and Login Form Management System Using MySQL Database GUI Desktop App Full Project With Source Code For Beginners

 

Welcome folks today in this post we will be building a student registration and login management system using mysql database in tkinter. All the full source code of the application is shown below.

 

 

Get Started

 

 

In order to get started you need to install the following library as shown below

 

pip install tkinter

 

pip install mysql-connector

 

After installing all these libraries make an app.py file and copy paste the following code

 

app.py

 

from tkinter.ttk import *
from tkinter import *
import mysql.connector
from tkinter import messagebox
mydb = mysql.connector.connect(
    host="localhost",
    user="root",
    password="",
    database="student"
)
mycursor = mydb.cursor()
root = Tk()
root.title("Student Data")
root.geometry("1200x700")
# photo = PhotoImage(file='image.png')
# label12 = Label(root, image=photo).grid(row=8, column=5)
label1 = Label(root, text="RollNo", width=20, height=2,
               bg="pink").grid(row=0, column=0)
label2 = Label(root, text="First_Name", width=20,
               height=2, bg="pink").grid(row=1, column=0)
label3 = Label(root, text="Last_Name", width=20,
               height=2, bg="pink").grid(row=2, column=0)
label4 = Label(root, text="Phone_Number", width=20,
               height=2, bg="pink").grid(row=3, column=0)
label5 = Label(root, text="City", width=20, height=2,
               bg="pink").grid(row=4, column=0)
label6 = Label(root, text="State", width=20, height=2,
               bg="pink").grid(row=5, column=0)
label7 = Label(root, text="Age", width=20, height=2,
               bg="pink").grid(row=6, column=0)
label8 = Label(root, width=10, height=2).grid(row=7, column=2)
label9 = Label(root, width=10, height=2).grid(row=7, column=4)
label10 = Label(root, width=10, height=2).grid(row=7, column=6)
label11 = Label(root, width=10, height=2).grid(row=7, column=8)
e1 = Entry(root, width=30, borderwidth=8)
e1.grid(row=0, column=1)
e2 = Entry(root, width=30, borderwidth=8)
e2.grid(row=1, column=1)
e3 = Entry(root, width=30, borderwidth=8)
e3.grid(row=2, column=1)
e4 = Entry(root, width=30, borderwidth=8)
e4.grid(row=3, column=1)
e5 = Entry(root, width=30, borderwidth=8)
e5.grid(row=4, column=1)
e6 = Entry(root, width=30, borderwidth=8)
e6.grid(row=5, column=1)
e7 = Entry(root, width=30, borderwidth=8)
e7.grid(row=6, column=1)


def Register():
    RollNo = e1.get()
    dbRollNo = ""
    Select = "select count(*) from student where RollNo='%s'" % (RollNo)
    mycursor.execute(Select)
    result = mycursor.fetchall()
    for i in result:
        dbRollNo = i[0]
    if(int(RollNo) != int(dbRollNo)):
        Insert = "Insert into student(RollNo,First_Name,Last_Name,Phone_Number,City,State,Age) values(%s,%s,%s,%s,%s,%s,%s)"
        First_Name = e2.get()
        Last_Name = e3.get()
        Phone_Number = e4.get()
        City = e5.get()
        State = e6.get()
        Age = e7.get()
        if(First_Name != "" and Last_Name != "" and Phone_Number != "" and City != "" and State != "" and Age != ""):
            Value = (RollNo, First_Name, Last_Name,
                     Phone_Number, City, State, Age)
            mycursor.execute(Insert, Value)
            mydb.commit()
            messagebox.askokcancel("Information", "Record inserted")
            e1.delete(0, END)
            e2.delete(0, END)
            e3.delete(0, END)
            e4.delete(0, END)
            e5.delete(0, END)
            e6.delete(0, END)
            e7.delete(0, END)
        else:
            if (First_Name == "" and Last_Name == "" and Phone_Number == "" and City == "" and State == "" and Age == ""):
                messagebox.askokcancel(
                    "Information", "New Entery Fill All Details")
            else:
                messagebox.askokcancel("Information", "Some fields left blank")
    else:
        messagebox.askokcancel("Information", "Record Already exists")


def ShowRecord():
    RollNo = e1.get()
    dbRollNo = ""
    Select = "select count(*) from student where RollNo='%s'" % (RollNo)
    mycursor.execute(Select)
    result1 = mycursor.fetchall()
    for i in result1:
        dbRollNo = i[0]
    # print(RollNo)
    # print(dbRollNo)
    if int(RollNo) == int(dbRollNo):
        Select1 = "select First_Name,Last_Name,Phone_Number,City,State,Age from student where RollNo='%s'" % (
            RollNo)
        mycursor.execute(Select1)
        result2 = mycursor.fetchall()
        First_Name = ""
        Last_Name = ""
        Phone_Number = ""
        City = ""
        State = ""
        Age = ""
        for i in result2:
            First_Name = i[0]
            Last_Name = i[1]
            Phone_Number = i[2]
            City = i[3]
            State = i[4]
            Age = i[5]
        e2.insert(0, First_Name)
        e3.insert(0, Last_Name)
        e4.insert(0, Phone_Number)
        e5.insert(0, City)
        e6.insert(0, State)
        e7.insert(0, Age)
        #messagebox.showinfo("Info", First_Name)
    else:
        messagebox.askokcancel("Information", "No Record exists")


def Delete():
    RollNo = e1.get()
    Delete = "delete from student where RollNo='%s'" % (RollNo)
    mycursor.execute(Delete)
    mydb.commit()
    messagebox.showinfo("Information", "Record Deleted")
    e1.delete(0, END)
    e2.delete(0, END)
    e3.delete(0, END)
    e4.delete(0, END)
    e5.delete(0, END)
    e6.delete(0, END)
    e7.delete(0, END)


def Update():
    RollNo = e1.get()
    First_Name = e2.get()
    Last_Name = e3.get()
    Phone_Number = e4.get()
    City = e5.get()
    State = e6.get()
    Age = e7.get()
    Update = "Update student set First_Name='%s', Last_Name='%s', Phone_Number='%s', City='%s', State='%s', Age='%s' where RollNo='%s'" % (
        First_Name, Last_Name, Phone_Number, City, State, Age, RollNo)
    mycursor.execute(Update)
    mydb.commit()
    messagebox.showinfo("Info", "Record Update")


def Showall():
    class A(Frame):
        def __init__(self, parent):
            Frame.__init__(self, parent)
            self.CreateUI()
            self.LoadTable()
            self.grid(sticky=(N, S, W, E))
            parent.grid_rowconfigure(0, weight=1)
            parent.grid_columnconfigure(0, weight=1)

        def CreateUI(self):
            tv = Treeview(self)
            tv['columns'] = ('RollNo', 'First_Name', 'Last_Name',
                             'Phone_Number', 'City', 'State', 'Age')
            tv.heading('#0', text='RollNo', anchor='center')
            tv.column('#0', anchor='center')
            tv.heading('#1', text='First_Name', anchor='center')
            tv.column('#1', anchor='center')
            tv.heading('#2', text='Last_Name', anchor='center')
            tv.column('#2', anchor='center')
            tv.heading('#3', text='Phone_Number', anchor='center')
            tv.column('#3', anchor='center')
            tv.heading('#4', text='City', anchor='center')
            tv.column('#4', anchor='center')
            tv.heading('#5', text='State', anchor='center')
            tv.column('#5', anchor='center')
            tv.heading('#6', text='Age', anchor='center')
            tv.column('#6', anchor='center')
            tv.grid(sticky=(N, S, W, E))
            self.treeview = tv
            self.grid_rowconfigure(0, weight=1)
            self.grid_columnconfigure(0, weight=1)

        def LoadTable(self):
            Select = "Select * from student"
            mycursor.execute(Select)
            result = mycursor.fetchall()
            RollNo = ""
            First_Name = ""
            Last_Name = ""
            Phone_Number = ""
            City = ""
            State = ""
            Age = ""
            for i in result:
                RollNo = i[0]
                First_Name = i[1]
                Last_Name = i[2]
                Phone_Number = i[3]
                City = i[4]
                State = i[5]
                Age = i[6]
                self.treeview.insert("", 'end', text=RollNo, values=(
                    First_Name, Last_Name, Phone_Number, City, State, Age))
    root = Tk()
    root.title("Overview Page")
    A(root)


def Clear():
    e1.delete(0, END)
    e2.delete(0, END)
    e3.delete(0, END)
    e4.delete(0, END)
    e5.delete(0, END)
    e6.delete(0, END)
    e7.delete(0, END)


button1 = Button(root, text="Register", width=10, height=2,
                 command=Register).grid(row=7, column=0)
button2 = Button(root, text="Delete", width=10, height=2,
                 command=Delete).grid(row=7, column=1)
button3 = Button(root, text="Update", width=10, height=2,
                 command=Update).grid(row=7, column=3)
button4 = Button(root, text="Show record", width=10, height=2,
                 command=ShowRecord).grid(row=7, column=5)
button5 = Button(root, text="Show All", width=10, height=2,
                 command=Showall).grid(row=7, column=7)
button6 = Button(root, text="Clear", width=10, height=2,
                 command=Clear).grid(row=7, column=9)
root.mainloop()

 

See also  Python 3 PyQt5 Advanced Menubar Widget With Menu Items GUI Desktop App Full Project For Beginners

Now you can execute the above python script by typing the below command as shown below

 

python app.py

 

Leave a Reply