Untitled
unknown
plain_text
2 years ago
9.4 kB
15
Indexable
#pip install PyMySQL
import pymysql
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
import tkinter as tk
#connection for phpmyadmin
def connection():
conn = pymysql.connect(
host='localhost',
user='root',
password='',
db='students_db',
)
return conn
def refreshTable():
for data in my_tree.get_children():
my_tree.delete(data)
for array in read():
my_tree.insert(parent='', index='end', iid=array, text="", values=(array), tag="orow")
my_tree.tag_configure('orow', background='#EEEEEE', font=('Arial', 12))
my_tree.grid(row=8, column=0, columnspan=5, rowspan=11, padx=10, pady=20)
root = Tk()
root.title("Student Registration System")
root.geometry("1080x720")
my_tree = ttk.Treeview(root)
#placeholders for entry
ph1 = tk.StringVar()
ph2 = tk.StringVar()
ph3 = tk.StringVar()
ph4 = tk.StringVar()
ph5 = tk.StringVar()
#placeholder set value function
def setph(word,num):
if num ==1:
ph1.set(word)
if num ==2:
ph2.set(word)
if num ==3:
ph3.set(word)
if num ==4:
ph4.set(word)
if num ==5:
ph5.set(word)
def read():
conn = connection()
cursor = conn.cursor()
cursor.execute("SELECT * FROM students")
results = cursor.fetchall()
conn.commit()
conn.close()
return results
def add():
studid = str(studidEntry.get())
fname = str(fnameEntry.get())
lname = str(lnameEntry.get())
address = str(addressEntry.get())
phone = str(phoneEntry.get())
if (studid == "" or studid == " ") or (fname == "" or fname == " ") or (lname == "" or lname == " ") or (address == "" or address == " ") or (phone == "" or phone == " "):
messagebox.showinfo("Error", "Please fill up the blank entry")
return
else:
try:
conn = connection()
cursor = conn.cursor()
cursor.execute("INSERT INTO students VALUES ('"+studid+"','"+fname+"','"+lname+"','"+address+"','"+phone+"') ")
conn.commit()
conn.close()
except:
messagebox.showinfo("Error", "Stud ID already exist")
return
refreshTable()
def reset():
decision = messagebox.askquestion("Warning!!", "Delete all data?")
if decision != "yes":
return
else:
try:
conn = connection()
cursor = conn.cursor()
cursor.execute("DELETE FROM students")
conn.commit()
conn.close()
except:
messagebox.showinfo("Error", "Sorry an error occured")
return
refreshTable()
def delete():
decision = messagebox.askquestion("Warning!!", "Delete the selected data?")
if decision != "yes":
return
else:
selected_item = my_tree.selection()[0]
deleteData = str(my_tree.item(selected_item)['values'][0])
try:
conn = connection()
cursor = conn.cursor()
cursor.execute("DELETE FROM students WHERE STUDID='"+str(deleteData)+"'")
conn.commit()
conn.close()
except:
messagebox.showinfo("Error", "Sorry an error occured")
return
refreshTable()
def select():
try:
selected_item = my_tree.selection()[0]
studid = str(my_tree.item(selected_item)['values'][0])
fname = str(my_tree.item(selected_item)['values'][1])
lname = str(my_tree.item(selected_item)['values'][2])
address = str(my_tree.item(selected_item)['values'][3])
phone = str(my_tree.item(selected_item)['values'][4])
setph(studid,1)
setph(fname,2)
setph(lname,3)
setph(address,4)
setph(phone,5)
except:
messagebox.showinfo("Error", "Please select a data row")
def search():
studid = str(studidEntry.get())
fname = str(fnameEntry.get())
lname = str(lnameEntry.get())
address = str(addressEntry.get())
phone = str(phoneEntry.get())
conn = connection()
cursor = conn.cursor()
cursor.execute("SELECT * FROM students WHERE STUDID='"+
studid+"' or FNAME='"+
fname+"' or LNAME='"+
lname+"' or ADDRESS='"+
address+"' or PHONE='"+
phone+"' ")
try:
result = cursor.fetchall()
for num in range(0,5):
setph(result[0][num],(num+1))
conn.commit()
conn.close()
except:
messagebox.showinfo("Error", "No data found")
def update():
selectedStudid = ""
try:
selected_item = my_tree.selection()[0]
selectedStudid = str(my_tree.item(selected_item)['values'][0])
except:
messagebox.showinfo("Error", "Please select a data row")
studid = str(studidEntry.get())
fname = str(fnameEntry.get())
lname = str(lnameEntry.get())
address = str(addressEntry.get())
phone = str(phoneEntry.get())
if (studid == "" or studid == " ") or (fname == "" or fname == " ") or (lname == "" or lname == " ") or (address == "" or address == " ") or (phone == "" or phone == " "):
messagebox.showinfo("Error", "Please fill up the blank entry")
return
else:
try:
conn = connection()
cursor = conn.cursor()
cursor.execute("UPDATE students SET STUDID='"+
studid+"', FNAME='"+
fname+"', LNAME='"+
lname+"', ADDRESS='"+
address+"', PHONE='"+
phone+"' WHERE STUDID='"+
selectedStudid+"' ")
conn.commit()
conn.close()
except:
messagebox.showinfo("Error", "Stud ID already exist")
return
refreshTable()
label = Label(root, text="Student Registration System (CRUD MATRIX)", font=('Arial Bold', 30))
label.grid(row=0, column=0, columnspan=8, rowspan=2, padx=50, pady=40)
studidLabel = Label(root, text="Stud ID", font=('Arial', 15))
fnameLabel = Label(root, text="Firstame", font=('Arial', 15))
lnameLabel = Label(root, text="Lastame", font=('Arial', 15))
addressLabel = Label(root, text="Address", font=('Arial', 15))
phoneLabel = Label(root, text="Phone", font=('Arial', 15))
studidLabel.grid(row=3, column=0, columnspan=1, padx=50, pady=5)
fnameLabel.grid(row=4, column=0, columnspan=1, padx=50, pady=5)
lnameLabel.grid(row=5, column=0, columnspan=1, padx=50, pady=5)
addressLabel.grid(row=6, column=0, columnspan=1, padx=50, pady=5)
phoneLabel.grid(row=7, column=0, columnspan=1, padx=50, pady=5)
studidEntry = Entry(root, width=55, bd=5, font=('Arial', 15), textvariable = ph1)
fnameEntry = Entry(root, width=55, bd=5, font=('Arial', 15), textvariable = ph2)
lnameEntry = Entry(root, width=55, bd=5, font=('Arial', 15), textvariable = ph3)
addressEntry = Entry(root, width=55, bd=5, font=('Arial', 15), textvariable = ph4)
phoneEntry = Entry(root, width=55, bd=5, font=('Arial', 15), textvariable = ph5)
studidEntry.grid(row=3, column=1, columnspan=4, padx=5, pady=0)
fnameEntry.grid(row=4, column=1, columnspan=4, padx=5, pady=0)
lnameEntry.grid(row=5, column=1, columnspan=4, padx=5, pady=0)
addressEntry.grid(row=6, column=1, columnspan=4, padx=5, pady=0)
phoneEntry.grid(row=7, column=1, columnspan=4, padx=5, pady=0)
addBtn = Button(
root, text="Add", padx=65, pady=25, width=10,
bd=5, font=('Arial', 15), bg="#84F894", command=add)
updateBtn = Button(
root, text="Update", padx=65, pady=25, width=10,
bd=5, font=('Arial', 15), bg="#84E8F8", command=update)
deleteBtn = Button(
root, text="Delete", padx=65, pady=25, width=10,
bd=5, font=('Arial', 15), bg="#FF9999", command=delete)
searchBtn = Button(
root, text="Search", padx=65, pady=25, width=10,
bd=5, font=('Arial', 15), bg="#F4FE82", command=search)
resetBtn = Button(
root, text="Reset", padx=65, pady=25, width=10,
bd=5, font=('Arial', 15), bg="#F398FF", command=reset)
selectBtn = Button(
root, text="Select", padx=65, pady=25, width=10,
bd=5, font=('Arial', 15), bg="#EEEEEE", command=select)
addBtn.grid(row=3, column=5, columnspan=1, rowspan=2)
updateBtn.grid(row=5, column=5, columnspan=1, rowspan=2)
deleteBtn.grid(row=7, column=5, columnspan=1, rowspan=2)
searchBtn.grid(row=9, column=5, columnspan=1, rowspan=2)
resetBtn.grid(row=11, column=5, columnspan=1, rowspan=2)
selectBtn.grid(row=13, column=5, columnspan=1, rowspan=2)
style = ttk.Style()
style.configure("Treeview.Heading", font=('Arial Bold', 15))
my_tree['columns'] = ("Stud ID","Firstname","Lastname","Address","Phone")
my_tree.column("#0", width=0, stretch=NO)
my_tree.column("Stud ID", anchor=W, width=170)
my_tree.column("Firstname", anchor=W, width=150)
my_tree.column("Lastname", anchor=W, width=150)
my_tree.column("Address", anchor=W, width=165)
my_tree.column("Phone", anchor=W, width=150)
my_tree.heading("Stud ID", text="Student ID", anchor=W)
my_tree.heading("Firstname", text="Firstname", anchor=W)
my_tree.heading("Lastname", text="Lastname", anchor=W)
my_tree.heading("Address", text="Address", anchor=W)
my_tree.heading("Phone", text="Phone", anchor=W)
refreshTable()
root.mainloop()Editor is loading...
Leave a Comment