Project 1 - English Dictionary App & Library Book Management System
English Dictionary App
from tkinter import *
import json
window = Tk()
window.title('Dictionary App')
def add_a_new_word_fn():
add_word = Tk()
add_word.title('ADD A NEW WORD')
def save():
f = open('word.txt','a+')
data = {Entry1.get():Entry2.get()}
json.dump(data,f)
f.write('\n')
f.close()
add_word.destroy()
var1 = StringVar()
var2 = StringVar()
label1 = Label(add_word,text='Enter the word:')
label1.grid(row=0,column=0,padx=5,pady=5)
Entry1 = Entry(add_word,textvariable =var1,width=20)
Entry1.grid(row=0,column=1,padx=5,pady=5)
label2 = Label(add_word,text='Enter the meaning:')
label2.grid(row=1,column=0,padx=5,pady=5)
Entry2 = Entry(add_word,textvariable =var2,width=20)
Entry2.grid(row=1,column=1,padx=5,pady=5)
button1 = Button(add_word,text='Save',command=save)
button1.grid(row=3,column=1,padx=5,pady=5)
add_word.mainloop()
def find_the_meaning_fn():
find_word = Tk()
find_word.title('Meaning Finder')
def search():
f = open('word.txt', 'r')
data = []
for line in f:
data.append(json.loads(line))
count = 0
for l in data:
for key,value in l.items():
if(key==Entry1.get()):
Entry2.delete(0,'end')
Entry2.insert('end',value)
count+=1
if count == 0:
Entry2.delete(0,'end')
label3.config(text='Given word not found')
f.close()
var1 = StringVar()
var2 = StringVar()
label1 = Label(find_word,text='Enter the word to be checked')
label1.grid(row=0,column=0,padx=5,pady=5)
Entry1 = Entry(find_word,textvariable =var1,width=20)
Entry1.grid(row=0,column=1,padx=5,pady=5)
label2 = Label(find_word,text='Meaning')
label2.grid(row=1,column=0,padx=5,pady=5)
Entry2 = Entry(find_word,textvariable =var2,width=20)
Entry2.grid(row=1,column=1,padx=5,pady=5)
label3 = Label(find_word)
label3.grid(row=2,column=0,padx=5,pady=5)
button1 = Button(find_word,text='Search',command=search)
button1.grid(row=3,column=1,padx=5,pady=5)
button2 = Button(find_word,text='Exit',command=find_word.destroy)
button2.grid(row=4,column=1,padx=5,pady=5)
find_word.mainloop()
def update_a_word_fn():
update_word = Tk()
update_word.title('UPDATE WORD MEANING')
def update():
f = open('word.txt', 'r+')
list_1 = []
for line in f:
data = json.loads(line)
for i,j in data.items():
if (i==Entry1.get()):
data[i]=Entry2.get()
list_1.append(data)
f.close()
g = open('word.txt','w')
for line in list_1:
json.dump(line,g)
g.write('\n')
g.close()
update_word.destroy()
var1 = StringVar()
var2 = StringVar()
label1 = Label(update_word,text='Enter the word:')
label1.grid(row=0,column=0,padx=5,pady=5)
Entry1 = Entry(update_word,textvariable =var1,width=20)
Entry1.grid(row=0,column=1,padx=5,pady=5)
label2 = Label(update_word,text='Enter the meaning:')
label2.grid(row=1,column=0,padx=5,pady=5)
Entry2 = Entry(update_word,textvariable =var2,width=20)
Entry2.grid(row=1,column=1,padx=5,pady=5)
label3 = Label(update_word)
label3.grid(row=2,column=0,padx=5,pady=5)
button1 = Button(update_word,text='Update',command=update)
button1.grid(row=3,column=1,padx=5,pady=5)
update_word.mainloop()
add_a_new_word_button = Button(window,text= 'Add a new word',command=add_a_new_word_fn)
add_a_new_word_button.pack()
find_the_meaning_button = Button(window,text= 'Find the meaning',command=find_the_meaning_fn)
find_the_meaning_button.pack()
update_a_word_button = Button(window,text= 'Update a word',command=update_a_word_fn)
update_a_word_button.pack()
exit_button = Button(window,text= 'Exit',command=window.destroy)
exit_button.pack()
window.mainloop()
Library Book Management System
#libraries
from tkinter import *
import sqlite3
import tkinter.ttk as ttk
import tkinter.messagebox as tkMessagebox
root = Tk()
root.title('A Library Application')
def Database():
global conn, cursor
conn = sqlite3.connect('library.db')
cursor = conn.cursor()
cursor.execute("create table if not exists library_table(BOOKTITLE TEXT, AUTHOR TEXT,YEAR INTEGER,ISBN TEXT)")
def add():
if Booktitle.get() == "" or Author.get() == "" or Year.get() == "" :
txt_result.config(text="Please enter all the fields",fg="red")
else:
Database()
cursor.execute("insert into library_table(BOOKTITLE,AUTHOR,YEAR,ISBN) values (?,?,?,?)",(str(Booktitle.get()),str(Author.get()),str(Year.get()),str(ISBN.get())))
conn.commit()
Booktitle.set('')
Author.set('')
Year.set('')
ISBN.set('')
cursor.close()
conn.close()
txt_result.config(text="record inserted",fg="green")
def display():
tree.delete(*tree.get_children())
Database()
cursor.execute('select * from library_table ORDER BY BOOKTITLE ASC')
fetch = cursor.fetchall()
for data in fetch:
tree.insert('','end',values=(data[0],data[1],data[2],data[3]))
cursor.close()
txt_result.config(text="successfully fetched data",fg="black")
def search():
tree.delete(*tree.get_children())
Database()
cursor.execute('select * from library_table where BOOKTITLE = ?',(str(Booktitle.get()),))
fetch = cursor.fetchall()
if fetch == []:
txt_result.config(text="No record found",fg="black")
else:
for data in fetch:
tree.insert('','end',values=(data[0],data[1],data[2],data[3]))
cursor.close()
cursor.close()
txt_result.config(text="successfully fetched data",fg="black")
def delete():
if Booktitle.get() == "":
txt_result.config(text="Please enter booktitle",fg="red")
else:
Database()
cursor.execute("delete from library_table where BOOKTITLE = ?",(str(Booktitle.get()),))
conn.commit()
Booktitle.set('')
Author.set('')
Year.set('')
ISBN.set('')
cursor.close()
conn.close()
txt_result.config(text="record deleted",fg="green")
def exit():
result = tkMessagebox.askquestion('Do you want to exit (y/n)',icon='warning')
if result == 'yes':
root.destroy()
exit()
# variable declaration
Booktitle = StringVar()
Author = StringVar()
Year = IntVar()
ISBN = StringVar()
# Frame
Top = Frame(root,width=900,height=50,bd=8,relief='raise' )
Top.pack(side = TOP)
Left = Frame(root,width=300,height=500,bd=8,relief='raise')
Left.pack(side = LEFT)
Right = Frame(root,width=600,height=500,bd=8,relief='raise')
Right.pack(side = RIGHT)
Forms = Frame(Left,width=300,height=450)
Forms.pack(side = TOP)
Buttons = Frame(Left,width=300,height=100,bd=8,relief='raise')
Buttons.pack(side=BOTTOM)
# labels
txt_title = Label(Top,width=900,font = ('arial',24),text = '.....Library Management Application....')
txt_title.pack()
book_title_name = Label(Forms,font = ('arial',16),text = 'Book Title',bd=15)
book_title_name .grid(row=0,stick='e')
author_name = Label(Forms,font = ('arial',16),text = 'Author',bd=15)
author_name.grid(row=1,stick='e')
year_title = Label(Forms,font = ('arial',16),text = 'Year',bd=15)
year_title.grid(row=3,stick='e')
ISBN_title = Label(Forms,font = ('arial',16),text = 'ISBN',bd=15)
ISBN_title.grid(row=4,stick='e')
txt_result = Label(Buttons)
txt_result.pack(side = TOP)
# Entry Widgets
book_title_entry = Entry(Forms,textvariable= Booktitle,width=30)
book_title_entry.grid(row=0,column=1)
author_entry = Entry(Forms,textvariable= Author,width=30)
author_entry.grid(row=1,column=1)
year_entry = Entry(Forms,textvariable=Year,width=30)
year_entry.grid(row=3,column=1)
ISBN_entry = Entry(Forms,textvariable=ISBN,width=30)
ISBN_entry.grid(row=4,column=1)
# Buttons Widget
btn_display = Button(Buttons,width=10,text='Display',command = display)
btn_display.pack(side=LEFT)
btn_search = Button(Buttons,width=10,text='Search',command = search)
btn_search.pack(side=LEFT)
btn_add = Button(Buttons,width=10,text='Add',command = add)
btn_add.pack(side=LEFT)
btn_issue = Button(Buttons,width=10,text='Issue',state = DISABLED)
btn_issue.pack(side=LEFT)
btn_delete = Button(Buttons,width=10,text='Delete',command = delete )
btn_delete.pack(side=LEFT)
btn_exit = Button(Buttons,width=10,text='Exit',command = exit)
btn_exit.pack(side=LEFT)
# List Widget
scrollbary = Scrollbar(Right,orient = VERTICAL)
scrollbarx = Scrollbar(Right, orient = HORIZONTAL)
tree = ttk.Treeview(Right, columns = ("Booktitle","Author","Year","ISBN"))
scrollbary.config(command = tree.yview)
scrollbary.pack(side = RIGHT, fill = Y)
scrollbarx.config(command = tree.xview)
scrollbarx.pack(side = BOTTOM, fill = X)
tree.heading('Booktitle',text="Booktitle",anchor=W)
tree.heading('Author',text="Author",anchor=W)
tree.heading('Year',text="Year",anchor=W)
tree.heading('ISBN',text="ISBN",anchor=W)
tree.column('#0',stretch=NO,minwidth=0,width=80)
tree.column('#1',stretch=NO,minwidth=0,width=120)
tree.column('#2',stretch=NO,minwidth=0,width=80)
tree.column('#3',stretch=NO,minwidth=0,width=150)
tree.pack()
if __name__=='__main__':
root.mainloop()