School Management
School Management
MASTNATH SR SEC
PUBLIC SCHOOL
Submitted By:-
Tushar Singh
Class : 12th Green
Board Roll no. : 123456789009999999
ACKNOWLED
GEMENT
(Mrs. Upasna)
Certificate
The project report entitled
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
import mysql.connector as my
Frame_Details = tk.LabelFrame(window,
text="Enter details", font=("Times new roman", 22,
"bold"), bd=12, relief=tk.GROOVE, bg="#e3f4f1")
Frame_Details.place(x=20, y=100, width=400,
height=575)
Frame_Data = tk.Frame(window, bd=12,
relief=tk.GROOVE, bg="#e3f4f1")
Frame_Data.place(x=440, y=100, width=890,
height=575)
# Variables
rollno = tk.StringVar()
name = tk.StringVar()
email = tk.StringVar()
gender = tk.StringVar()
class_var = tk.StringVar()
contact = tk.StringVar()
dob = tk.StringVar()
address = tk.StringVar()
search_box = tk.StringVar()
search_value = tk.StringVar() # For search value
input
# Entry widget
Label_Name = tk.Label(Frame_Details,
text="Name", font=("Times new roman", 17),
bg="#e3f4f1")
Label_Name.grid(row=0, column=0, padx=2,
pady=2)
Entry_Name = tk.Entry(Frame_Details, bd=7,
font=("Times new roman", 17), width=17,
textvariable=name)
Entry_Name.grid(row=0, column=1, padx=2,
pady=2)
Label_Email = tk.Label(Frame_Details,
text="Email", font=("Times new roman", 17),
bg="#e3f4f1")
Label_Email.grid(row=2, column=0, padx=2,
pady=2)
Entry_Email = tk.Entry(Frame_Details, bd=7,
font=("Times new roman", 17), width=17,
textvariable=email)
Entry_Email.grid(row=2, column=1, padx=2,
pady=2)
Label_Gender = tk.Label(Frame_Details,
text="Gender", font=("Times new roman", 17),
bg="#e3f4f1")
Label_Gender.grid(row=3, column=0, padx=2,
pady=2)
Entry_Gender = tk.Entry(Frame_Details, bd=7,
font=("Times new roman", 17), width=17,
textvariable=gender)
Entry_Gender.grid(row=3, column=1, padx=2,
pady=2)
Label_Class = tk.Label(Frame_Details,
text="Class", font=("Times new roman", 17),
bg="#e3f4f1")
Label_Class.grid(row=4, column=0, padx=2,
pady=2)
Entry_Class = tk.Entry(Frame_Details, bd=7,
font=("Times new roman", 17), width=17,
textvariable=class_var)
Entry_Class.grid(row=4, column=1, padx=2,
pady=2)
Label_contact_No = tk.Label(Frame_Details,
text="Contact No", font=("Times new roman", 17),
bg="#e3f4f1")
Label_contact_No.grid(row=6, column=0, padx=2,
pady=2)
Entry_contact_No = tk.Entry(Frame_Details, bd=7,
font=("Times new roman", 17), width=17,
textvariable=contact)
Entry_contact_No.grid(row=6, column=1, padx=2,
pady=2)
Label_Address = tk.Label(Frame_Details,
text="Address", font=("Times new roman", 17),
bg="#e3f4f1")
Label_Address.grid(row=8, column=0, padx=2,
pady=2)
Entry_Address = tk.Entry(Frame_Details, bd=7,
font=("Times new roman", 17), width=17,
textvariable=address)
Entry_Address.grid(row=8, column=1, padx=2,
pady=2)
if len(rows) != 0:
Student_table.delete(*Student_table.get_children()
)
for row in rows:
Student_table.insert('', tk.END, values=row)
try:
# Create a connection to the database
con = create_connection()
cur = con.cursor()
except Exception as e:
# Handle any errors during the update
process
messagebox.showerror('Error', f"An error
occurred: {e}")
if not value:
messagebox.showwarning("Input Required",
"Please enter a search term.")
return
con = create_connection()
cur = con.cursor()
cur.execute(query)
rows = cur.fetchall()
con.close()
if len(rows) != 0:
Student_table.delete(*Student_table.get_children()
)
for row in rows:
Student_table.insert('', tk.END, values=row)
if confirmation:
try:
# Create a connection to the database
con = create_connection()
cur = con.cursor()
except Exception as e:
# Handle any errors that might occur
messagebox.showerror('Error', f"An error
occurred: {e}")
# Buttons
Frame_Btn = tk.Frame(Frame_Details,
bg="#e3f4f1", bd=7, relief=tk.GROOVE)
Frame_Btn.place(x=15, y=390, width=348,
height=120)
Update_Button = tk.Button(Frame_Btn,
bg="#e3f4f1", text="Update", bd=7, font=("Times
new roman", 15), width=13,
command=UPDATE_DATA)
Update_Button.grid(row=1, column=0, padx=2,
pady=2)
Clear_Button = tk.Button(Frame_Btn,
bg="#e3f4f1", text="Clear", bd=7, font=("Times
new roman", 15), width=13, command=CLEAR)
Clear_Button.grid(row=1, column=1, padx=2,
pady=2)
# Search Frame
Frame_Search = tk.Frame(Frame_Data,
bg="#e3f4f1", bd=10, relief=tk.GROOVE)
Frame_Search.pack(side=tk.TOP, fill=tk.X)
Label_Search = tk.Label(Frame_Search,
text="Search", bg="#e3f4f1", font=("Times new
roman", 16))
Label_Search.grid(row=0, column=0, padx=12,
pady=2)
Search_Box = ttk.Combobox(Frame_Search,
font=("Times new roman", 16), state="readonly",
textvariable=search_box)
Search_Box['values'] = ("name", "rollno", "email",
"class_var", "contact", "dob")
Search_Box.grid(row=0, column=1, padx=12,
pady=2)
Entry_Search = tk.Entry(Frame_Search,
font=("Times new roman", 16),
textvariable=search_value)
Entry_Search.grid(row=0, column=2, padx=12,
pady=2)
Search_Button = tk.Button(Frame_Search,
bg="#e3f4f1", text="Search", bd=7, font=("Times
new roman", 15), width=14,
command=SEARCH_DATA)
Search_Button.grid(row=0, column=3, padx=12,
pady=2)
# Database Frame
Frame_Database = tk.Frame(Frame_Data,
bg="#e3f4f1", bd=11, relief=tk.GROOVE)
Frame_Database.pack(fill=tk.BOTH, expand=True)
Scroll_X = tk.Scrollbar(Frame_Database,
orient=tk.HORIZONTAL)
Scroll_Y = tk.Scrollbar(Frame_Database,
orient=tk.VERTICAL)
Student_table = ttk.Treeview(Frame_Database,
columns=("Name", "Roll No", "Email", "Gender",
"Class", "Contact No", "D.O.B", "Address"),
yscrollcommand=Scroll_Y.set,
xscrollcommand=Scroll_X.set)
Scroll_X.config(command=Student_table.xview)
Scroll_X.pack(side=tk.BOTTOM, fill=tk.X)
Scroll_Y.config(command=Student_table.yview)
Scroll_Y.pack(side=tk.RIGHT, fill=tk.Y)
Student_table.heading("Name", text="Name")
Student_table.heading("Roll No", text="Roll No")
Student_table.heading("Email", text="Email")
Student_table.heading("Gender", text="Gender")
Student_table.heading("Class", text="Class")
Student_table.heading("Contact No",
text="Contact No")
Student_table.heading("D.O.B", text="D.O.B")
Student_table.heading("Address", text="Address")
Student_table['show'] = 'headings'
Student_table.column("Name", width=100)
Student_table.column("Roll No", width=100)
Student_table.column("Email", width=100)
Student_table.column("Gender", width=100)
Student_table.column("Class", width=100)
Student_table.column("Contact No", width=100)
Student_table.column("D.O.B", width=100)
Student_table.column("Address", width=150)
Student_table.pack(fill=tk.BOTH, expand=True)
GET_DATA() # Populate data on startup
Student_table.bind("<ButtonRelease-1>", FOCUS)
window.mainloop()