from PIL import ImageTk, Image
from sqlite3 import *
from tkinter import ttk
from tkinter import messagebox
import time
# Save updated record
def update_record():
# Grab record number
selected = my_tree.focus()
# Save new data
my_tree.item(selected, text="", values=(upd_id, items_entry.get(), address_entry.get(), Email_entry.get(), Ph_No_entry.get(), Price_entry.get()))
#update database
conn=connect('database.db')
c=conn.cursor()
c.execute('''UPDATE CHECKOUT SET items=?, address=?, email=?, ph_No=?, price=? WHERE id=?''',
(( items_entry.get(), address_entry.get(), Email_entry.get(), Ph_No_entry.get(), Price_entry.get(),id,)))
conn.commit()
conn.close()
# Clear entry boxes
id_l1.config(text='')
items_entry.delete(0, END)
address_entry.delete(0, END)
Email_entry.delete(0, END)
Ph_No_entry.delete(0, END)
Price_entry.delete(0, END)
# Add Record
def add_record1():
my_tree.tag_configure('oddrow', background="white")
my_tree.tag_configure('evenrow', background="lightblue")
conn=connect('database.db')
c=conn.cursor()
c.execute('''INSERT INTO CHECKOUT(items,address,email,ph_no,price) VALUES(?,?,?,?,?)''',
(( items_entry.get(), address_entry.get(), Email_entry.get(), Ph_No_entry.get(), Price_entry.get())))
c.execute('''SELECT id FROM CHECKOUT''')
id=c.fetchall()
print(id)
for i in id:
new_id=i[0]
print(new_id)
conn.commit()
conn.close()
if new_id % 2 == 0:
my_tree.insert(parent='', index='end', text="", values=(new_id, address_entry.get(), Email_entry.get(), address_entry.get(), Ph_No_entry.get(), Price_entry.get() ), tags=('evenrow',))
else:
my_tree.insert(parent='', index='end', text="", values=(new_id, address_entry.get(), Email_entry.get(), address_entry.get(), Ph_No_entry.get(), Price_entry.get()), tags=('oddrow',))
# Clear the boxes
id_l1.config(text='')
items_entry.delete(0, END)
address_entry.delete(0, END)
Email_entry.delete(0, END)
Ph_No_entry.delete(0, END)
Price_entry.delete(0, END)
# Remove all records
def remove_all1():
for record in my_tree.get_children():
my_tree.delete(record)
conn=connect('database.db')
c=conn.cursor()
#c.execute('''DELETE FROM CHECKOUT''') deletes all from checkout
c.execute("DROP TABLE CHECKOUT") #this will delete table itself
conn.commit()
conn.close()
# Remove one selected
def remove_one1():
x = my_tree.selection()[0]
my_tree.delete(x)
conn=connect('database.db')
c=conn.cursor()
c.execute('''DELETE FROM CHECKOUT WHERE id=?''',(upd_id,))
conn.commit()
conn.close()
# Remove many selected
def remove_many1():
conn=connect('database.db')
c=conn.cursor()
x = my_tree.selection()
for record in x:
id_to_del=my_tree.item(record,'values')[0]
print(id_to_del)
c.execute('''DELETE FROM CHECKOUT WHERE id=?''',(id_to_del,))
my_tree.delete(record)
#or use c.executemany('''DELETE FROM CHECKOUT WHERE id=?''',[(a,)for a in ids_to_delete] )here ids_to_delete is list of ids selected
conn.commit()
conn.close()
#move row
def up():
rows = my_tree.selection()
print(my_tree.selection())
for row in rows:
my_tree.move(row, my_tree.parent(row), my_tree.index(row)-1)
print( my_tree.parent(row))
# Move Row Down
def down():
rows = my_tree.selection()
print(list(reversed(rows)))
for row in reversed(rows):
my_tree.move(row, my_tree.parent(row), my_tree.index(row)+1)
def select_record(e):
global upd_id
#clear entries first
id_l1.config(text='')
items_entry.delete(0,END)
address_entry.delete(0,END)
Email_entry.delete(0,END)
Ph_No_entry.delete(0,END)
Price_entry.delete(0,END)
#grab record no
selected=my_tree.focus()
#grab values of that record
values=my_tree.item(selected,'values')
print(values)
upd_id=values[0]
#insert into tree
id_l1.config(text=values[0])
items_entry.insert(0,values[1])
address_entry.insert(0,values[2])
Email_entry.insert(0,values[3])
Ph_No_entry.insert(0,values[4])
Price_entry.insert(0,values[5])
def tree():
global id_l1,items_entry,address_entry,Email_entry,Ph_No_entry,Price_entry,my_tree
m1.destroy()
m2=Tk()
m2.title('TreeBase')
m2.geometry("820x500")
# Add Some Style
style = ttk.Style()
# Pick A Theme
style.theme_use('default')
# Configure the Treeview Colors
style.configure("Treeview",
background="#D3D3D3",
foreground="black",
rowheight=25,
fieldbackground="#D3D3D3")
# Change Selected Color
style.map('Treeview',
background=[('selected', "#347083")])
# Create Treeview Frame
tree_frame = Frame(m2)
tree_frame.pack(pady=10)
# Treeview Scrollbar
tree_scroll = Scrollbar(tree_frame)
tree_scroll.pack(side=RIGHT, fill=Y)
# Create Treeview
my_tree = ttk.Treeview(tree_frame, yscrollcommand=tree_scroll.set, selectmode="extended")
# Pack to the screen
my_tree.pack()
#create label frame
data_frame = LabelFrame(m2, text="Record")
data_frame.pack(fill="x", expand="yes", padx=20)
button_frame = LabelFrame(m2, text="Commands")
button_frame.pack(fill="x", expand="yes", padx=20)
#Configure the scrollbar
tree_scroll.config(command=my_tree.yview)
# Define Our Columns
my_tree['columns'] = ("ID","items", "address","email", "ph_no","price")
# Format Our Columns
my_tree.column("#0", width=0, stretch=NO)
my_tree.column("ID", anchor=CENTER, width=50)
my_tree.column("items", anchor=W, width=140)
my_tree.column("address", anchor=W, width=140)
my_tree.column("email", anchor=CENTER, width=140)
my_tree.column("ph_no", anchor=CENTER, width=140)
my_tree.column("price", anchor=CENTER, width=140)
# Create Headings
my_tree.heading("#0", text="", anchor=W)
my_tree.heading("ID", text="ID", anchor=CENTER)
my_tree.heading("items", text="items", anchor=W)
my_tree.heading("address", text="address", anchor=W)
my_tree.heading("email", text="email", anchor=CENTER)
my_tree.heading("ph_no", text="ph_no", anchor=CENTER)
my_tree.heading("price", text="price", anchor=CENTER)
# Create striped row tags
my_tree.tag_configure('oddrow', background="white")
my_tree.tag_configure('evenrow', background="lightblue")
for i in a:
new_id=i[0]
if new_id % 2 == 0:
my_tree.insert(parent='', index='end', text="", values=(i[0], i[1], i[2], i[3], i[4], i[5]), tags=('evenrow',))
else:
my_tree.insert(parent='', index='end', text="", values=(i[0], i[1], i[2], i[3], i[4], i[5]), tags=('oddrow',))
id_label = Label(data_frame, text="id")
id_label.grid(row=0, column=0, padx=10, pady=10)
id_l1 = Label(data_frame,bg="white",width=15)
id_l1.grid(row=0, column=1, padx=10, pady=10)
items_label = Label(data_frame, text="items")
items_label.grid(row=0, column=2, padx=10, pady=10)
items_entry = Entry(data_frame)
items_entry.grid(row=0, column=3, padx=10, pady=10)
address_label = Label(data_frame, text="Address")
address_label.grid(row=0, column=4, padx=10, pady=10)
address_entry = Entry(data_frame)
address_entry.grid(row=0, column=5, padx=10, pady=10)
Email_label = Label(data_frame, text="Email")
Email_label.grid(row=1, column=0, padx=10, pady=10)
Email_entry = Entry(data_frame)
Email_entry.grid(row=1, column=1, padx=10, pady=10)
Ph_No_label = Label(data_frame, text="Ph_No:")
Ph_No_label.grid(row=1, column=2, padx=10, pady=10)
Ph_No_entry = Entry(data_frame)
Ph_No_entry.grid(row=1, column=3, padx=10, pady=10)
Price_label = Label(data_frame, text="Price")
Price_label.grid(row=1, column=4, padx=10, pady=10)
Price_entry = Entry(data_frame)
Price_entry.grid(row=1, column=5, padx=10, pady=10)
#####BUTTONS#########
update_button = Button(button_frame, text="Update Record", command=update_record)
update_button.grid(row=0, column=0, padx=10, pady=10)
add_record = Button(button_frame, text="Add Record", command=add_record1)
add_record.grid(row=0, column=1, pady=10, padx=10)
# Remove all
remove_all = Button(button_frame, text="Remove All Records", command=remove_all1)
remove_all.grid(row=0, column=2, pady=10, padx=5)
# Remove One
remove_one = Button(button_frame, text="Remove One Selected", command=remove_one1)
remove_one.grid(row=0, column=3, pady=10, padx=5)
# Remove Many Selected
remove_many = Button(button_frame, text="Remove Many Selected", command=remove_many1)
remove_many.grid(row=0, column=4, pady=10, padx=5)
move_up = Button(button_frame, text="Move Up", command=up)
move_up.grid(pady=10, padx=5, row=0, column=5)
move_down = Button(button_frame, text="Move Down", command=down)
move_down.grid(pady=10, padx=5, row=0, column=6)
my_tree.bind("<ButtonRelease-1>",select_record)
def db():
global total,order,a
price={'Chicken tikka':2000,"Chicken fajita":1900,"Malai Tikka":2100,"soup":500,"salad":200}
conn=connect('database.db')
c=conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS CHECKOUT (id integer PRIMARY KEY AUTOINCREMENT,
items text,
address text,
email text,
ph_no integer,
price integer)''')
x,y,z=ad.get(),email.get(),ContactVar.get()
print(x,y,z)
order=""
total=0
print(listbox.curselection())
for i in listbox.curselection():
order+=(listbox.get(i)+",")
total+=price[listbox.get(i)]
print(listbox.curselection())
print(total)
print(order)
c.execute('''INSERT INTO CHECKOUT(items,address,email,ph_no,price) VALUES(?,?,?,?,?)''',(order,x,y,z,total))
c.execute('''SELECT id FROM CHECKOUT''')
id=c.fetchall()
id=id[0][0]
print(id)
c.execute('''SELECT * FROM CHECKOUT''')
a=c.fetchall()
print(a)
conn.commit()
conn.close()
def done():
messagebox.showinfo(title="Confirmed",message="Your order has been placed")
def checkout():
global m1
email_get=Email_e3.get()
email_check1="@gmail.com"
email_check2="@yahoo.com"
if listbox.curselection()==():
mb1=messagebox.showerror(title='ERROR!',message='Please pick an item.')
return
if len(address.get()) ==0:
mb1=messagebox.showerror(title='ERROR!',message='Please enter present adress!')
return
if email_get.endswith(email_check1) or email_get.endswith(email_check2):
pass
else:
mb2=messagebox.showerror(title='ERROR!',message='Please enter valid email address')
Email_e3.delete(0,END)
return
if ContactVar.get().startswith("03") and len(ContactVar.get())==11 and ContactVar.get().isdigit:
pass
else:
mb3=messagebox.showerror(title='ERROR!',message='Please enter valid contact number')
MN_e3.delete(0,END)
return
db()
m.destroy()
m1=Tk()
m1.geometry("300x300")
bill_label=Label(m1,text="Your have chosen:")
bill_label.pack(side=TOP)
bill_label2=Label(m1,text=order)
bill_label2.pack(side=TOP)
bill_label3=Label(m1,text="Your total is:")
bill_label3.pack(side=TOP,pady=(20,0))
bill_Total=Label(m1,text=total)
bill_Total.pack(side=TOP)
confirm_b1=Button(m1,text="Place order",command=done)
confirm_b1.pack(side=TOP,pady=20)
confirm_b2=Button(m1,text="Update orders",command=tree)
confirm_b2.pack(side=TOP,pady=5)
m1.mainloop()
def window():
global m,cb,address,Email_e3, ContactVar,CN_e2,MN_e3,listbox,ad,email
mw.destroy()
m = Tk()
m.title('Welcome to Broadway')
m.config(bg="orange")
m.geometry("1020x600")
KE_image = PhotoImage(file="broadwaymain.png")
KE_image.subsample(1,1)
KE_label = Label(m,image=KE_image,height=240)
KE_label.place(x=0,y=0)
Select_items=Label(m,text="Select items:",fg="#00008B",bg="orange",font="Bold")
Select_items.place(x=40,y=250)
Email_label = Label(m,text="Email",fg="#00008B",bg='orange',font="BOLD")
Email_label.place(x=40,y=425)
under_Email_label = Label(m,text="(Please provide a valid email address to receive your by Email)",fg="#00008B",bg='orange',font=("",10))
under_Email_label.place(x=40,y=485)
Address_label = Label(m,text="Address*",bg='orange',fg="#00008B",font="BOLD")
Address_label.place(x=600,y=250)
under_Address_label = Label(m,text="Complete address",fg="#00008B",bg='orange',font=("",10))
under_Address_label.place(x=600,y=310)
Mobile_label = Label(m,text="Mobile Number *",fg="#00008B",bg='orange',font="BOLD")
Mobile_label.place(x=600,y=425)
under_Mobile_label = Label(m,text="eg: 03xx-xxxxxxx. Please provide your active mobile number",fg="#00008B",bg='orange',font=("",10))
under_Mobile_label.place(x=600,y=485)
listbox = Listbox(m,
bg="#f7ffde",
selectmode=MULTIPLE)
listbox.insert(1,"Chicken tikka")
listbox.insert(2,"Chicken fajita")
listbox.insert(3,"Malai Tikka")
listbox.insert(4,"soup")
listbox.insert(5,"salad")
listbox.config(height=listbox.size())
listbox.place(x=40,y=290)
ad=StringVar()
address=Entry(m,width=65,textvariable=ad)
address.place(x=600,y=290)
email=StringVar()
Email_e3=Entry(m,width=65,textvariable=email)
Email_e3.place(x=40,y=465)
ContactVar=StringVar()
MN_e3=Entry(m,width=65,textvariable=ContactVar)
MN_e3.place(x=600,y=465)
Checkout_Btn=Button(m,text="Proceed to checkout",fg="white",bg="green",padx=25,relief=RAISED,highlightbackground = "black", highlightthickness = 2,command=checkout)
Checkout_Btn.place(x=830,y=550)
m.mainloop()
mw=Tk()
mw.title('Welcome to Broadway')
photo = PhotoImage(file = 'broadway logo.png')
mw.wm_iconphoto(True, photo)
mw.geometry("520x520")
Titleimage=PhotoImage(file='broadway.png')
Titleimage2=Titleimage.subsample(1,1)
title_label=Label(mw,image=Titleimage)
title_label.place(x=0,y=0)
Duplicate_bill_Btn=Button(mw,text="Take my order",fg="#3792cb",bg="orange",command=window,relief=RIDGE,bd=5,font=("",12,'bold'))
Duplicate_bill_Btn.place(x=240,y=330)
mw.mainloop()




.png)
.png)
Comments
Post a Comment