Learn practical skills, build real-world projects, and advance your career
Updated 4 years ago
import tkinter as tk
from tkinter import font as tkfont
from tkinter import ttk
import sqlite3 as sq
import tkinter.messagebox
from PIL import Image,ImageTk
import ctypes
class SampleApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.pack(side="top", fill="both", expand=True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (login,StartPage,add1,view,delete,search,update):
frame=F(container,self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(login)
self.state("zoomed")
def show_frame(self, container):
'''Show a frame for the given page name'''
frame = self.frames[container]
frame.tkraise()
class login(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
tk.Frame.configure(self,bg="purple")
self.controller = controller
label = tk.Label(self, text="Student database system",bg='black',fg='yellow')
label.config(font=("Courier", 44))
label.pack(side="top", fill="x", pady=10)
USERID=tk.StringVar(self,'')
PASSWORD=tk.StringVar(self,'')
a="farin"
b="786"
button1 = tk.Button(self, text="login",width=50,bg='black',fg='yellow',
command=lambda:login1(self))
button1.place(relx=0.15,rely=0.6)
label1 = tk.Label(self, text="USERID",width=30,bg="black",fg="yellow")
label1.place(relx=0.05,rely=0.3)
entry1=tk.Entry(self,width=55,textvariable=USERID)
entry1.place(relx=0.23,rely=0.3)
label2 = tk.Label(self, text="PASSWORD",width=30,bg="black",fg="yellow")
label2.place(relx=0.05,rely=0.4)
entry2=tk.Entry(self,width=55,show="*",textvariable=PASSWORD)
entry2.place(relx=0.23,rely=0.4)
def login1(self):
if str(USERID.get())=="":
tkinter.messagebox.showinfo("ERROR","user blank")
elif PASSWORD.get()=="":
tkinter.messagebox.showinfo("ERROR","pass blank")
elif str(USERID.get())==a and PASSWORD.get()==b:
self.controller.show_frame(StartPage)
else:
tkinter.messagebox.showinfo("ERROR","wrong input")
def img1(self):
self.img=Image.open("slide1.jpg")
self.img=self.img.resize((700,640))
photo=ImageTk.PhotoImage(self.img)
self.lab=tk.Label(self,image=photo)
self.img.image=photo
self.lab.place(relx=0.5,rely=0.12)
return img1(self)
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
tk.Frame.configure(self,bg="purple")
self.controller = controller
label = tk.Label(self, text="Student database system",bg='black',fg='yellow')
label.config(font=("Courier", 44))
label.pack(side="top", fill="x", pady=10)
button1 = tk.Button(self, text="add",width=50,bg='black',fg='yellow',
command=lambda: controller.show_frame(add1))
button2 = tk.Button(self, text="view",width=50,bg='black',fg='yellow',
command=lambda: controller.show_frame(view))
button3 = tk.Button(self, text="delete",width=50,bg='black',fg='yellow',
command=lambda: controller.show_frame(delete))
button4 = tk.Button(self, text="search",width=50,bg='black',fg='yellow',
command=lambda: controller.show_frame(search))
button5 = tk.Button(self, text="update",width=50,bg='black',fg='yellow',
command=lambda: controller.show_frame(update))
button1.place(relx=0.7,rely=0.3)
button2.place(relx=0.7,rely=0.4)
button3.place(relx=0.7,rely=0.5)
button4.place(relx=0.7,rely=0.6)
button5.place(relx=0.7,rely=0.7)
def img1(self):
self.img=Image.open("trident .jpg")
self.img=self.img.resize((850,600))
photo=ImageTk.PhotoImage(self.img)
self.lab=tk.Label(self,image=photo)
self.img.image=photo
self.lab.place(relx=0.01,rely=0.12)
return img1(self)
class add1(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
tk.Frame.configure(self,bg="purple")
e1=tk.StringVar(self,'')
e2=tk.StringVar(self,'')
e3=tk.StringVar(self,'')
e4=tk.StringVar(self,'')
label1 =tk.Label(self, text="name",width=10,bg="black",fg="yellow")
label1.place(relx=0.1,rely=0.2)
entry1=tk.Entry(self,width=30,textvariable=e1)
entry1.place(relx=0.3,rely=0.2)
label2 = tk.Label(self, text="roll",width=10,bg="black",fg="yellow")
label2.place(relx=0.1,rely=0.3)
entry2=tk.Entry(self,width=30,textvariable=e2)
entry2.place(relx=0.3,rely=0.3)
label3 = tk.Label(self, text="address",width=10,bg="black",fg="yellow")
label3.place(relx=0.1,rely=0.4)
entry3=tk.Entry(self,width=30,textvariable=e3)
entry3.place(relx=0.3,rely=0.4)
label4 = tk.Label(self, text="phnno",width=10,bg="black",fg="yellow")
label4.place(relx=0.1,rely=0.5)
entry4=tk.Entry(self,width=30,textvariable=e4)
entry4.place(relx=0.3,rely=0.5)
button = tk.Button(self, text="submit",width=30,bg="black",fg="yellow",font=("bold"),
command=lambda:(create(self)))
button.place(relx=0.3,rely=0.6)
button = tk.Button(self, text="Go to the start page",width=30,bg="black",fg="yellow",font=("bold"),
command=lambda: controller.show_frame(StartPage))
button.place(relx=0.3,rely=0.7)
def create(self):
con=sq.connect("data.db")
c=con.cursor()
f=e2.get()
try:
f1=int(f)
except ValueError:
tkinter.messagebox.showerror("warning","invalid ROLLNO")
v=int(len(str(e4.get())))
if e1.get()=="":
tkinter.messagebox.showwarning("warning","name is empty")
elif e2.get()=="":
tkinter.messagebox.showwarning("warning","roll is empty")
elif e3.get()=="":
tkinter.messagebox.showwarning("warning","address is empty")
elif e4.get()=="":
tkinter.messagebox.showwarning("warning","phnno is empty")
elif v!=10:
tkinter.messagebox.showwarning("warning","no. shoud be 10")
else:
try:
c.execute('CREATE TABLE IF NOT EXISTS table4(name TEXT UNIQUE,roll INTEGER UNIQUE,address TEXT,phnno INTEGER UNIQUE)')
c.execute('INSERT INTO table4(name,roll,address,phnno) VALUES(?,?,?,?)',[e1.get(),e2.get(),e3.get(),e4.get()])
result=tkinter.messagebox.askyesno("submit","do you want to submit?")
if result==True:
tkinter.messagebox.showinfo("record submitted","your record submitted succssessfully")
else:
return print('no')
except:
tkinter.messagebox.showwarning("Warning","Record already present")
con.commit()
class view(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
tk.Frame.configure(self,bg="purple")
def tree1(self):
con = sq.connect('data.db')
c = con.cursor()
c.execute("SELECT * FROM table4")
self.tree=ttk.Treeview(self)
self.tree["columns"]=("e1","e2","e3","e4","e5")
self.tree.column("#0", width=50, stretch=tk.NO)
self.tree.column("e1", width=120, stretch=tk.NO)
self.tree.column("e2", width=120,stretch=tk.NO)
self.tree.column("e3", width=60, stretch=tk.NO)
self.tree.column("e4", width=60, stretch=tk.NO)
self.tree.heading("#0",text="id",anchor=tk.W)
self.tree.heading("e1", text="name",anchor=tk.W)
self.tree.heading("e2", text="roll",anchor=tk.W)
self.tree.heading("e3", text="address",anchor=tk.W)
self.tree.heading("e4", text="phnno",anchor=tk.W)
self.tree.place(relx=0.2,rely=0.1,width=800,height=400)
#self.tree.tag_configure("evenrow",background='white',foreground='black')
#self.tree.tag_configure("oddrow",background='black',foreground='white')
index=id=1
for row in c:
self.tree.insert("", index=id, text=id, values=row)
index=id=index+1
con.commit()
btnViewRec=tk.Button(self,text="View All Records",bg="ghost white",font=("bold"),command=lambda:tree1(self) )
btnViewRec.place(relx=0.3,rely=0.7,relwidth=0.4)
btnViewRec.config(bg='black', fg='yellow')
button = tk.Button(self, text="Go to the add page",width=20,bg="black",fg="yellow",font=("bold"),
command=lambda: controller.show_frame(add1))
button.place(relx=0.8,rely=0.2)
button = tk.Button(self, text="Go to the delete page",width=20,bg="black",fg="yellow",font=("bold"),
command=lambda: controller.show_frame(delete))
button.place(relx=0.8,rely=0.3)
button = tk.Button(self, text="Go to the search page",width=20,bg="black",fg="yellow",font=("bold"),
command=lambda: controller.show_frame(search))
button.place(relx=0.8,rely=0.4)
button = tk.Button(self, text="Go to the update page",width=20,bg="black",fg="yellow",font=("bold"),
command=lambda: controller.show_frame(update))
button.place(relx=0.8,rely=0.5)
class delete(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
tk.Frame.configure(self,bg="purple")
label6 = tk.Label(self, text="roll",width=10,bg="black",fg="yellow")
label6.place(relx=0.1,rely=0.3)
entry6=tk.Entry(self,width=30)
entry6.place(relx=0.3,rely=0.3)
button = tk.Button(self, text="delete",width=30,bg="black",fg="yellow",font=("bold"),
command=lambda:(delete1(self)))
button.place(relx=0.3,rely=0.6)
button = tk.Button(self, text="Go to the start page",width=30,bg="black",fg="yellow",font=("bold"),
command=lambda: controller.show_frame(StartPage))
button.place(relx=0.3,rely=0.7)
def delete1(self):
con = sq.connect('data.db')
c = con.cursor()
c.execute("DELETE FROM table4 WHERE roll= "+entry6.get())
result=tkinter.messagebox.askyesno("delete","do you want to delete?")
if result==True:
tkinter.messagebox.showinfo("record deleted","your record deleted succssessfully")
else:
return print('no')
con.commit()
class search(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
tk.Frame.configure(self,bg="purple")
global entry1
global entry2
global entry3
global entry4
button = tk.Button(self, text="Go to the start page",width=30,bg="black",fg="yellow",font=("bold"),
command=lambda: controller.show_frame(StartPage))
button.place(relx=0.3,rely=0.6)
label1 =tk.Label(self, text="name",width=10,bg="black",fg="yellow")
label1.place(relx=0.1,rely=0.2)
self.entry1=tk.Entry(self,width=30)
self.entry1.place(relx=0.3,rely=0.2)
label2 = tk.Label(self, text="roll",width=10,bg="black",fg="yellow")
label2.place(relx=0.1,rely=0.3)
entry2=tk.Entry(self,width=30)
entry2.place(relx=0.3,rely=0.3)
label3 = tk.Label(self, text="address",width=10,bg="black",fg="yellow")
label3.place(relx=0.1,rely=0.4)
entry3=tk.Entry(self,width=30)
entry3.place(relx=0.3,rely=0.4)
label4 = tk.Label(self, text="phnno",width=10,bg="black",fg="yellow")
label4.place(relx=0.1,rely=0.5)
entry4=tk.Entry(self,width=30)
entry4.place(relx=0.3,rely=0.5)
button = tk.Button(self, text="search",width=10,bg="black",fg="yellow",font=("bold"),
command=lambda:(search1(self)))
button.place(relx=0.1,rely=0.7)
entry5=tk.Entry(self,width=30)
entry5.place(relx=0.3,rely=0.7)
def search1(self):
var=str(entry5.get())
con = sq.connect('data.db')
c = con.cursor()
try:
ser=int(entry5.get())
except ValueError:
tkinter.messagebox.showerror("ERROR","user blank/wrong input")
d=c.execute("select count (*) from table4")
f=d.fetchone()
if ser>f[0]:
tkinter.messagebox.showinfo("error","roll not found")
else:
c.execute("SELECT * FROM table4 WHERE roll= "+str(ser))
a=c.fetchall()
for record in a:
self.entry1.insert(0,record[0])
entry2.insert(0,record[1])
entry3.insert(0,record[2])
entry4.insert(0,record[3])
con.commit()
con.close()
class update(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
tk.Frame.configure(self,bg="purple")
button = tk.Button(self, text="Go to the start page",width=30,bg="black",fg="yellow",font=("bold"),
command=lambda: controller.show_frame(StartPage))
button.place(relx=0.3,rely=0.6)
entry5=tk.Entry(self,width=30)
entry5.place(relx=0.3,rely=0.7)
def update1(self):
con = sq.connect('data.db')
c = con.cursor()
serv=int(entry5.get())
c.execute("""update table4 SET
name=:a1,
address=:a2,
phnno=:a3
WHERE roll=:a4""",
{
'a1':entry1.get(),
'a2':entry2.get(),
'a3':entry3.get(),
'a4':str(serv)
})
result=tkinter.messagebox.askyesno("update","do you want to update?")
if result==True:
tkinter.messagebox.showinfo("record update","your record updated succssessfully")
else:
return print('no')
con.commit()
con.close()
def search1(self):
con = sq.connect('data.db')
c = con.cursor()
ser=int(entry5.get())
c.execute("SELECT * FROM table4 WHERE roll= "+str(ser))
a=c.fetchall()
con.commit()
global entry1
global entry2
global entry3
global entry4
label1 =tk.Label(self, text="name",width=10,bg="black",fg="yellow")
label1.place(relx=0.1,rely=0.2)
entry1=tk.Entry(self,width=30)
entry1.place(relx=0.3,rely=0.2)
label2 = tk.Label(self, text="roll",width=10,bg="black",fg="yellow")
label2.place(relx=0.1,rely=0.3)
entry2=tk.Entry(self,width=30)
entry2.place(relx=0.3,rely=0.3)
label3 = tk.Label(self, text="address",width=10,bg="black",fg="yellow")
label3.place(relx=0.1,rely=0.4)
entry3=tk.Entry(self,width=30)
entry3.place(relx=0.3,rely=0.4)
label4 = tk.Label(self, text="phnno",width=10,bg="black",fg="yellow")
label4.place(relx=0.1,rely=0.5)
entry4=tk.Entry(self,width=30)
entry4.place(relx=0.3,rely=0.5)
for record in a:
entry1.insert(0,record[0])
entry2.insert(0,record[1])
entry3.insert(0,record[2])
entry4.insert(0,record[3])
buttonsr = tk.Button(self, text="search",width=10,bg="black",fg="yellow",font=("bold"),
command=lambda:(search1(self)))
buttonsr.place(relx=0.1,rely=0.7)
buttonup=tk.Button(self, text="update",width=10,bg="black",fg="yellow",font=("bold"),
command=lambda:(update1(self)))
buttonup.place(relx=0.1,rely=0.8)
entry5=tk.Entry(self,width=30)
entry5.place(relx=0.2,rely=0.7)
app = SampleApp()
app.mainloop()
import jovian
jovian.commit()
[jovian] Saving notebook..
import tkinter as tkinter
import sqlite3 as sq
con=sq.connect("data.db")
c=con.cursor()
# c.execute('CREATE TABLE IF NOT EXISTS table3(id INTEGER ,name TEXT UNIQUE,roll INTEGER UNIQUE,address TEXT,phnno INTEGER UNIQUE)')
c.execute('SELECT * FROM table3 WHERE roll=2')
con.commit()
import jovian