0% found this document useful (0 votes)
78 views

Cs Tkinter

This document defines functions for an employee information system using Python and Tkinter. It includes functions for: - Creating the main window and login form interfaces - Logging users in and validating credentials against a database - Displaying a home screen after successful login - Adding, viewing, searching, and deleting employee records stored in a database table - Connecting to and querying a SQLite database to retrieve, add, update employee records

Uploaded by

Aryan Agney
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
78 views

Cs Tkinter

This document defines functions for an employee information system using Python and Tkinter. It includes functions for: - Creating the main window and login form interfaces - Logging users in and validating credentials against a database - Displaying a home screen after successful login - Adding, viewing, searching, and deleting employee records stored in a database table - Connecting to and querying a SQLite database to retrieve, add, update employee records

Uploaded by

Aryan Agney
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

from PIL import *

from tkinter import *


from PIL import Image,ImageTk
import tkinter.messagebox as tkMessageBox
import sqlite3
import tkinter.ttk as ttk

g="#0a2845"#color
gg='#134e86'#secondary color
gw="white"
root = Tk()
root.title("LCIT Employee Information System")

width = 1335
height = 720
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x = (screen_width/2) - (width/2)
y = (screen_height/2) - (height/2)
root.geometry("%dx%d+%d+%d" % (width, height, x, y))
root.resizable(0, 0)
root.configure(background=g)

Image_open=Image.open("a.png")
image=ImageTk.PhotoImage(Image_open)
logo=Label(root,image=image,bg=gg)
logo.place(x=0,y=0,bordermode="outside")

#========================================VARIABLES=======================
=================
USERNAME = StringVar()
PASSWORD = StringVar()
PRODUCT_NAME = StringVar()
PRODUCT_PRICE = IntVar()
PRODUCT_QTY = StringVar()
SEARCH = StringVar()

#========================================METHODS=========================
=================

def Database():
global conn, cursor
conn = sqlite3.connect("pythontut.db")
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS `admin` (admin_id INTEGER
PRIMARY KEY AUTOINCREMENT NOT NULL, username TEXT, password TEXT)")
cursor.execute("CREATE TABLE IF NOT EXISTS `product` (product_id
INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, product_name TEXT,
product_qty TEXT, product_price TEXT)")
cursor.execute("SELECT * FROM `admin` WHERE `username` = 'admin' AND
`password` = 'admin'")
if cursor.fetchone() is None:
cursor.execute("INSERT INTO `admin` (username, password)
VALUES('admin', 'admin')")
conn.commit()

def Exit():
result = tkMessageBox.askquestion('LCIT Employee Information System',
'Are you sure you want to exit?', icon="warning")
if result == 'yes':
root.destroy()
exit()

def Exit2():
result = tkMessageBox.askquestion('LCIT Employee Information System',
'Are you sure you want to exit?', icon="warning")
if result == 'yes':
Home.destroy()
exit()

def ShowLoginForm():
global loginform
loginform = Toplevel()
loginform.title("LCIT Employee Information System/Account Login")
width = 600
height = 500
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x = (screen_width/2) - (width/2)
y = (screen_height/2) - (height/2)
loginform.resizable(0, 0)
loginform.geometry("%dx%d+%d+%d" % (width, height, x, y))
LoginForm()

def LoginForm():
global lbl_result
TopLoginForm = Frame(loginform, width=600, height=100, bd=1,
relief=SOLID)
TopLoginForm.pack(side=TOP, pady=20)
lbl_text = Label(TopLoginForm, text="Administrator Login",
font=('arial', 18), width=600)
lbl_text.pack(fill=X)
MidLoginForm = Frame(loginform, width=600)
MidLoginForm.pack(side=TOP, pady=50)
lbl_username = Label(MidLoginForm, text="Username:", font=('arial',
25), bd=18)
lbl_username.grid(row=0)
lbl_password = Label(MidLoginForm, text="Password:", font=('arial',
25), bd=18)
lbl_password.grid(row=1)
lbl_result = Label(MidLoginForm, text="", font=('arial', 18))
lbl_result.grid(row=3, columnspan=2)
username = Entry(MidLoginForm, textvariable=USERNAME, font=('arial',
25), width=15)
username.grid(row=0, column=1)
password = Entry(MidLoginForm, textvariable=PASSWORD, font=('arial',
25), width=15, show="*")
password.grid(row=1, column=1)
btn_login = Button(MidLoginForm, text="Login", font=('arial', 18),
width=30, command=Login)
btn_login.grid(row=2, columnspan=2, pady=20)
btn_login.bind('<Return>', Login)

def Home():
global Home
Home = BottomLevel()
Home.title("LCIT Employee Information System/Home")
width = 1024
height = 520

screen_width = Home.winfo_screenwidth()
screen_height = Home.winfo_screenheight()
x = (screen_width/2) - (width/2)
y = (screen_height/2) - (height/2)
Home.geometry("%dx%d+%d+%d" % (width, height, x, y))
Home.resizable(0, 0)

Title = Frame(Home, bd=1, relief=SOLID)


Title.pack(pady=10)
lbl_display = Label(Title, text="LCIT Employee Information System",
font=('arial', 45))
lbl_display.pack()

menubar = Menu(Home)
filemenu = Menu(menubar, tearoff=0)
filemenu2 = Menu(menubar, tearoff=0)
filemenu.add_command(label="Logout", command=Logout)
filemenu.add_command(label="Exit", command=Exit2)
filemenu2.add_command(label="Add new Employee", command=ShowAddNew)
filemenu2.add_command(label="View Details", command=ShowView)
menubar.add_cascade(label="Account", menu=filemenu)
menubar.add_cascade(label="EDIT DETAILS", menu=filemenu2)
Home.config(menu=menubar)

Home.config(background=g)

Image_open=Image.open("a.png")
image=ImageTk.PhotoImage(Image_open)
logo=Label(image=image,bg=gg)

logo.pack()
def ShowAddNew():
global addnewform
addnewform = Toplevel()
addnewform.title("LCIT Employee Information System/Add new")
width = 600
height = 500
screen_width = Home.winfo_screenwidth()
screen_height = Home.winfo_screenheight()
x = (screen_width/2) - (width/2)
y = (screen_height/2) - (height/2)
addnewform.geometry("%dx%d+%d+%d" % (width, height, x, y))
addnewform.resizable(0, 0)
AddNewForm()

def AddNewForm():
TopAddNew = Frame(addnewform, width=600, height=100, bd=1,
relief=SOLID)
TopAddNew.pack(side=TOP, pady=20)
lbl_text = Label(TopAddNew, text="Add New Employee", font=('arial',
18), width=600)
lbl_text.pack(fill=X)
MidAddNew = Frame(addnewform, width=600)
MidAddNew.pack(side=TOP, pady=50)
lbl_productname = Label(MidAddNew, text="Employee Name:",
font=('arial', 25), bd=10)
lbl_productname.grid(row=0, sticky=W)
lbl_qty = Label(MidAddNew, text="Department:", font=('arial', 25),
bd=10)
lbl_qty.grid(row=1, sticky=W)
lbl_price = Label(MidAddNew, text="Phone No:", font=('arial', 25),
bd=10)
lbl_price.grid(row=2, sticky=W)
productname = Entry(MidAddNew, textvariable=PRODUCT_NAME,
font=('arial', 25), width=15)
productname.grid(row=0, column=1)
productqty = Entry(MidAddNew, textvariable=PRODUCT_QTY,
font=('arial', 25), width=15)
productqty.grid(row=1, column=1)
productprice = Entry(MidAddNew, textvariable=PRODUCT_PRICE,
font=('arial', 25), width=15)
productprice.grid(row=2, column=1)
btn_add = Button(MidAddNew, text="Save", font=('arial', 18),
width=30, bg="#009ACD", command=AddNew)
btn_add.grid(row=3, columnspan=2, pady=20)

def AddNew():
Database()
cursor.execute("INSERT INTO `product` (product_name, product_qty,
product_price) VALUES(?, ?, ?)", (str(PRODUCT_NAME.get()),
str(PRODUCT_QTY.get()), int(PRODUCT_PRICE.get())))
conn.commit()
PRODUCT_NAME.set("")
PRODUCT_PRICE.set("")
PRODUCT_QTY.set("")
cursor.close()
conn.close()

def ViewForm():
global tree
TopViewForm = Frame(viewform, width=600, bd=1, relief=SOLID)
TopViewForm.pack(side=TOP, fill=X)
LeftViewForm = Frame(viewform, width=600)
LeftViewForm.pack(side=LEFT, fill=Y)
MidViewForm = Frame(viewform, width=600)
MidViewForm.pack(side=RIGHT)
lbl_text = Label(TopViewForm, text="View Employees", font=('arial',
18), width=600)
lbl_text.pack(fill=X)
lbl_txtsearch = Label(LeftViewForm, text="Search", font=('arial',
15))
lbl_txtsearch.pack(side=TOP, anchor=W)
search = Entry(LeftViewForm, textvariable=SEARCH, font=('arial', 15),
width=10)
search.pack(side=TOP, padx=10, fill=X)
btn_search = Button(LeftViewForm, text="Search", command=Search)
btn_search.pack(side=TOP, padx=10, pady=10, fill=X)
btn_reset = Button(LeftViewForm, text="Reset", command=Reset)
btn_reset.pack(side=TOP, padx=10, pady=10, fill=X)
btn_delete = Button(LeftViewForm, text="Delete", command=Delete)
btn_delete.pack(side=TOP, padx=10, pady=10, fill=X)
scrollbarx = Scrollbar(MidViewForm, orient=HORIZONTAL)
scrollbary = Scrollbar(MidViewForm, orient=VERTICAL)
tree = ttk.Treeview(MidViewForm, columns=("EmployeeID", "Employee
Name", "Employee Qty", "Employee Price"), selectmode="extended",
height=100, yscrollcommand=scrollbary.set, xscrollcommand=scrollbarx.set)
scrollbary.config(command=tree.yview)
scrollbary.pack(side=RIGHT, fill=Y)
scrollbarx.config(command=tree.xview)
scrollbarx.pack(side=BOTTOM, fill=X)
tree.heading('EmployeeID', text="EmployeeID",anchor=W)
tree.heading('Employee Name', text="Employee Name",anchor=W)
tree.heading('Employee Qty', text="Deapartment",anchor=W)
tree.heading('Employee Price', text="Phone No",anchor=W)
tree.column('#0', stretch=NO, minwidth=0, width=0)
tree.column('#1', stretch=NO, minwidth=0, width=0)
tree.column('#2', stretch=NO, minwidth=0, width=200)
tree.column('#3', stretch=NO, minwidth=0, width=120)
tree.column('#4', stretch=NO, minwidth=0, width=120)
tree.pack()
DisplayData()

def DisplayData():
Database()
cursor.execute("SELECT * FROM `product`")
fetch = cursor.fetchall()
for data in fetch:
tree.insert('', 'end', values=(data))
cursor.close()
conn.close()

def Search():
if SEARCH.get() != "":
tree.delete(*tree.get_children())
Database()
cursor.execute("SELECT * FROM `product` WHERE `product_name` LIKE
?", ('%'+str(SEARCH.get())+'%',))
fetch = cursor.fetchall()
for data in fetch:
tree.insert('', 'end', values=(data))
cursor.close()
conn.close()

def Reset():
tree.delete(*tree.get_children())
DisplayData()
SEARCH.set("")

def Delete():
if not tree.selection():
print("ERROR")
else:
result = tkMessageBox.askquestion('LCIT Employee Information
System', 'Are you sure you want to delete this record?', icon="warning")
if result == 'yes':
curItem = tree.focus()
contents =(tree.item(curItem))
selecteditem = contents['values']
tree.delete(curItem)
Database()
cursor.execute("DELETE FROM `product` WHERE `product_id` =
%d" % selecteditem[0])
conn.commit()
cursor.close()
conn.close()

def ShowView():
global viewform
viewform = Toplevel()
viewform.title("LCIT Employee Information System/View Employee")
width = 600
height = 400
screen_width = Home.winfo_screenwidth()
screen_height = Home.winfo_screenheight()
x = (screen_width/2) - (width/2)
y = (screen_height/2) - (height/2)
viewform.geometry("%dx%d+%d+%d" % (width, height, x, y))
viewform.resizable(0, 0)
ViewForm()

def Logout():
result = tkMessageBox.askquestion('LCIT Employee Information System',
'Are you sure you want to logout?', icon="warning")
if result == 'yes':
admin_id = ""
root.deiconify()
Home.destroy()

def Login(event=None):
global admin_id
Database()
if USERNAME.get == "" or PASSWORD.get() == "":
lbl_result.config(text="Please complete the required field!",
fg="red")
else:
cursor.execute("SELECT * FROM `admin` WHERE `username` = ? AND
`password` = ?", (USERNAME.get(), PASSWORD.get()))
if cursor.fetchone() is not None:
cursor.execute("SELECT * FROM `admin` WHERE `username` = ?
AND `password` = ?", (USERNAME.get(), PASSWORD.get()))
data = cursor.fetchone()
admin_id = data[0]
USERNAME.set("")
PASSWORD.set("")
lbl_result.config(text="")
ShowHome()
else:
lbl_result.config(text="Invalid username or password",
fg="red")
USERNAME.set("")
PASSWORD.set("")
cursor.close()
conn.close()

def ShowHome():
root.withdraw()
Home()
loginform.destroy()

#========================================MENUBAR
WIDGETS==================================
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Account", command=ShowLoginForm)
filemenu.add_command(label="Exit", command=Exit)
menubar.add_cascade(label="File", menu=filemenu)
root.config(menu=menubar)

#========================================FRAME===========================
=================
Title = Frame(root, bd=1, relief=SOLID)
Title.pack(pady=10)

#========================================LABEL
WIDGET=====================================
#lbl_display = Label(Title, text="LCIT Employee Infdormation System",
font=('arial', 45))
#lbl_display.pack()

#========================================INITIALIZATION==================
=================
if __name__ == '__main__':
root.mainloop()

You might also like