Advertisement
Guest User

Untitled

a guest
Aug 28th, 2017
299
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.45 KB | None | 0 0
  1. from tkinter import *
  2. import tkinter.messagebox as tm
  3.  
  4.  
  5. from tkinter import*
  6. import random
  7. import time
  8. import os
  9. import sqlite3
  10. import datetime
  11.  
  12. class gui:
  13. def __init__(self, root):
  14. self.root = root
  15. self.text_Input = StringVar()
  16. self.operator =""
  17. self.Tops = Frame(root, width = 1600,height=50,relief=SUNKEN)
  18. self.Tops.pack(side=TOP)
  19. self.f1 = Frame(root, width = 800,height = 700, relief=SUNKEN)
  20. self.f1.pack(side=LEFT)
  21.  
  22. self.f2 = Frame(root, width = 300,height = 700, relief=SUNKEN)
  23. self.f2.pack(side=RIGHT)
  24. #==============================Time======================================
  25. self.localtime=time.asctime(time.localtime(time.time()))
  26. #===============================Information==============================
  27. self.lblInfo = Label(self.Tops, font=('arial',50, 'bold'),text="Restaurant",fg="red", bd=10, anchor='w')
  28. self.lblInfo.grid(row=0,column=0)
  29. self.lblInfo = Label(self.Tops, font=('arial',20, 'bold'),text=self.localtime,fg="blue", bd=10, anchor='w')
  30. self.lblInfo.grid(row=1,column=0)
  31.  
  32.  
  33. self.txtDisplay = Entry(self.f2,font=('arial',20,'bold'), textvariable=self.text_Input, bd=30, insertwidth=4,
  34. bg="powder blue", justify='right')
  35. self.txtDisplay.grid(columnspan=4)
  36.  
  37. self.btn7=Button(self.f2,padx=16,pady=16,bd=8, fg="black", font=('arial',20,'bold'),text="7", bg="powder blue", command=lambda: self.btnClick(7)).grid(row=2,column=0)
  38.  
  39. self.btn8=Button(self.f2,padx=16,pady=16,bd=8, fg="black", font=('arial',20,'bold'),text="8", bg="powder blue", command=lambda: self.btnClick(8)).grid(row=2,column=1)
  40.  
  41. self.btn9=Button(self.f2,padx=16,pady=16,bd=8, fg="black", font=('arial',20,'bold'),text="9", bg="powder blue", command=lambda: self.btnClick(9)).grid(row=2,column=2)
  42.  
  43. self.Addition=Button(self.f2,padx=16,pady=16,bd=8, fg="black", font=('arial',20,'bold'),text="+", bg="powder blue", command=lambda: self.btnClick("+")).grid(row=2,column=3)
  44.  
  45.  
  46. #################################################################################################################
  47.  
  48. self.btn4=Button(self.f2,padx=16,pady=16,bd=8, fg="black", font=('arial',20,'bold'),text="4", bg="powder blue", command=lambda: self.btnClick(4)).grid(row=3,column=0)
  49.  
  50. self.btn5=Button(self.f2,padx=16,pady=16,bd=8, fg="black", font=('arial',20,'bold'),text="5", bg="powder blue", command=lambda: self.btnClick(5)).grid(row=3,column=1)
  51.  
  52. self.btn6=Button(self.f2,padx=16,pady=16,bd=8, fg="black", font=('arial',20,'bold'),text="6", bg="powder blue", command=lambda: self.btnClick(6)).grid(row=3,column=2)
  53.  
  54. self.Subtraction=Button(self.f2,padx=16,pady=16,bd=8, fg="black", font=('arial',20,'bold'),text="-", bg="powder blue", command=lambda: self.btnClick("-")).grid(row=3,column=3)
  55.  
  56.  
  57. #============================================= Row 4 ===============================================
  58.  
  59. self.btn1=Button(self.f2,padx=16,pady=16,bd=8, fg="black", font=('arial',20,'bold'),text="1", bg="powder blue", command=lambda: self.btnClick(1)).grid(row=4,column=0)
  60.  
  61. self.btn2=Button(self.f2,padx=16,pady=16,bd=8, fg="black", font=('arial',20,'bold'),text="2", bg="powder blue", command=lambda: self.btnClick(2)).grid(row=4,column=1)
  62.  
  63. self.btn3=Button(self.f2,padx=16,pady=16,bd=8, fg="black", font=('arial',20,'bold'),text="3", bg="powder blue", command=lambda: self.btnClick(3)).grid(row=4,column=2)
  64.  
  65. self.Multiply=Button(self.f2,padx=16,pady=16,bd=8, fg="black", font=('arial',20,'bold'),text="*", bg="powder blue", command=lambda: self.btnClick("*")).grid(row=4,column=3)
  66.  
  67. #============================================ Row 5 ====================
  68.  
  69.  
  70. self.btn0=Button(self.f2,padx=16,pady=16,bd=8, fg="black", font=('arial',20,'bold'),text="0", bg="powder blue", command=lambda: self.btnClick(0)).grid(row=5,column=0)
  71.  
  72. self.btnClear=Button(self.f2,padx=16,pady=16,bd=8, fg="black", font=('arial',20,'bold'),text="C", bg="powder blue", command=lambda: self.btnClearDisplay()).grid(row=5,column=1)
  73.  
  74. self.btnEquals=Button(self.f2,padx=16,pady=16,bd=8, fg="black", font=('arial',20,'bold'),text="=", bg="powder blue", command=lambda: self.btnEqualsInput()).grid(row=5,column=2)
  75.  
  76. self.Division=Button(self.f2,padx=16,pady=16,bd=8, fg="black", font=('arial',20,'bold'),text="/", bg="powder blue", command=lambda: self.btnClick("/")).grid(row=5,column=3)
  77.  
  78. #===============================================Restaurant Info 1=========================================================
  79. self.rand = StringVar()
  80. self.Fries = StringVar()
  81. self.Burger = StringVar()
  82. self.Fillet = StringVar()
  83. self.SubTotal = StringVar()
  84. self.Total = StringVar()
  85. self.customerName = StringVar()
  86. self.Drinks = StringVar()
  87. self.Tax = StringVar()
  88. self.Cost = StringVar()
  89. self.Chicken_Burger = StringVar()
  90. self.Cheese_Burger = StringVar()
  91.  
  92.  
  93. self.lblReference= Label(self.f1,font=('arial',16,'bold'), text="Reference", bd=16, anchor='w')
  94. self.lblReference.grid(row=0,column=0)
  95. self.txtReference=Entry(self.f1,font=('arial',16,'bold'), textvariable=self.rand, bd=10, insertwidth=4, bg="powder blue", justify = 'right')
  96. self.txtReference.grid(row=0,column=1)
  97.  
  98. self.lblFries= Label(self.f1,font=('arial',16,'bold'), text="Large Fries", bd=16, anchor='w')
  99. self.lblFries.grid(row=1,column=0)
  100. self.txtFries=Entry(self.f1,font=('arial',16,'bold'), textvariable=self.Fries, bd=10, insertwidth=4, bg="powder blue", justify = 'right')
  101. self.txtFries.grid(row=1,column=1)
  102.  
  103. self.lblBurger= Label(self.f1,font=('arial',16,'bold'), text="Burger Meal", bd=16, anchor='w')
  104. self.lblBurger.grid(row=2,column=0)
  105. self.txtBurger=Entry(self.f1,font=('arial',16,'bold'), textvariable=self.Burger, bd=10, insertwidth=4, bg="powder blue", justify = 'right')
  106. self.txtBurger.grid(row=2,column=1)
  107.  
  108. self.lblFillet= Label(self.f1,font=('arial',16,'bold'), text="Fillet_o_Meal", bd=16, anchor='w')
  109. self.lblFillet.grid(row=3,column=0)
  110. self.txtFillet=Entry(self.f1,font=('arial',16,'bold'), textvariable=self.Fillet, bd=10, insertwidth=4, bg="powder blue", justify = 'right')
  111. self.txtFillet.grid(row=3,column=1)
  112.  
  113. self.lblChicken= Label(self.f1,font=('arial',16,'bold'), text="Chicken Meal", bd=16, anchor='w')
  114. self.lblChicken.grid(row=4,column=0)
  115. self.txtChicken=Entry(self.f1,font=('arial',16,'bold'), textvariable=self.Chicken_Burger, bd=10, insertwidth=4, bg="powder blue", justify = 'right')
  116. self.txtChicken.grid(row=4,column=1)
  117.  
  118. self.lblCheese= Label(self.f1,font=('arial',16,'bold'), text="Cheese Meal", bd=16, anchor='w')
  119. self.lblCheese.grid(row=5,column=0)
  120. self.txtCheese=Entry(self.f1,font=('arial',16,'bold'), textvariable=self.Cheese_Burger, bd=10, insertwidth=4, bg="powder blue", justify = 'right')
  121. self.txtCheese.grid(row=5,column=1)
  122.  
  123. #===============================================Restaurant Info 2=========================================================
  124.  
  125. self.lblDrinks= Label(self.f1,font=('arial',16,'bold'), text="Drinks", bd=16, anchor='w')
  126. self.lblDrinks.grid(row=0,column=2)
  127. self.txtDrinks=Entry(self.f1,font=('arial',16,'bold'), textvariable=self.Drinks, bd=10, insertwidth=4, bg="#ffffff", justify = 'right')
  128. self.txtDrinks.grid(row=0,column=3)
  129.  
  130. self.lblCost= Label(self.f1,font=('arial',16,'bold'), text="Cost of Meal", bd=16, anchor='w')
  131. self.lblCost.grid(row=2,column=2)
  132. self.txtCost=Entry(self.f1,font=('arial',16,'bold'), textvariable=self.Cost, bd=10, insertwidth=4, bg="#ffffff", justify = 'right')
  133. self.txtCost.grid(row=2,column=3)
  134.  
  135. self.lblService= Label(self.f1,font=('arial',16,'bold'), text="Customer Name", bd=16, anchor='w')
  136. self.lblService.grid(row=1,column=2)
  137. self.txtService=Entry(self.f1,font=('arial',16,'bold'), textvariable=self.customerName, bd=10, insertwidth=4, bg="#ffffff", justify = 'right')
  138. self.txtService.grid(row=1,column=3)
  139.  
  140. self.lblStateTax= Label(self.f1,font=('arial',16,'bold'), text="State Tax", bd=16, anchor='w')
  141. self.lblStateTax.grid(row=3,column=2)
  142. self.txtStateTax=Entry(self.f1,font=('arial',16,'bold'), textvariable=self.Tax, bd=10, insertwidth=4, bg="#ffffff", justify = 'right')
  143. self.txtStateTax.grid(row=3,column=3)
  144.  
  145. self.lblSubTotal= Label(self.f1,font=('arial',16,'bold'), text="Sub Total", bd=16, anchor='w')
  146. self.lblSubTotal.grid(row=4,column=2)
  147. self.txtSubTotal=Entry(self.f1,font=('arial',16,'bold'), textvariable=self.SubTotal, bd=10, insertwidth=4, bg="#ffffff", justify = 'right')
  148. self.txtSubTotal.grid(row=4,column=3)
  149.  
  150. self.lblTotalCost= Label(self.f1,font=('arial',16,'bold'), text="Total Cost", bd=16, anchor='w')
  151. self.lblTotalCost.grid(row=5,column=2)
  152. self.txtTotalCost=Entry(self.f1,font=('arial',16,'bold'), textvariable=self.Total, bd=10, insertwidth=4, bg="#ffffff", justify = 'right')
  153. self.txtTotalCost.grid(row=5,column=3)
  154.  
  155. #===============================================Buttons=========================================================
  156.  
  157. self.btnTotal=Button(self.f1,padx=16,pady=8, bd=16, fg="black",font=('arial',16,'bold'), width=10, text="Total", bg="powder blue",command = lambda: self.Ref()).grid(row=7, column=1)
  158.  
  159. self.btnReset=Button(self.f1,padx=16,pady=8, bd=16, fg="black",font=('arial',16,'bold'), width=10, text="Reset", bg="powder blue",command = lambda: self.Reset()).grid(row=8, column=2)
  160.  
  161. self.btnExit=Button(self.f1,padx=16,pady=8, bd=16, fg="black",font=('arial',16,'bold'), width=10, text="Exit", bg="powder blue",command = lambda: self.qExit()).grid(row=8, column=3)
  162.  
  163. self.btnPrint=Button(self.f1,padx=16,pady=8, bd=16, fg="black",font=('arial',16,'bold'), width=10, text="Print", bg="powder blue",command = lambda: self.fileWrite()).grid(row=7, column=2)
  164.  
  165. self.btnHelp=Button(self.f1,padx=16,pady=8, bd=16, fg="black",font=('arial',16,'bold'), width=10, text="Help", bg="powder blue", command= lambda: self.softwareHelp()).grid(row=7, column=3)
  166.  
  167. self.btnAddToFile=Button(self.f1,padx=16,pady=8, bd=16, fg="black",font=('arial',16,'bold'), width=10, text="Add to File", bg="powder blue", command = lambda: self.databaseInput()).grid(row=8, column=1)
  168.  
  169. #================================================ Write/Print ============================
  170. def fileWrite(self):
  171. name = nameCustomer
  172. f = open(name + ".txt","w+")
  173.  
  174. appendMe = "test"
  175. appendFile = open(name + ".txt","a")
  176. appendFile.write(str(appendMe))
  177. #==========================================================================================
  178. #============================Calculator==================================
  179. def btnClick(self, numbers):
  180. global operator
  181. operator = self.operator + str(numbers)
  182. self.text_Input.set(operator)
  183.  
  184. def btnClearDisplay(self):
  185. global operator
  186. operator = ""
  187. self.text_Input.set("")
  188.  
  189. def btnEqualsInput(self):
  190. global operator
  191. self.sumup =str(eval(operator))
  192. self.text_Input.set(sumup)
  193. operator = ""
  194.  
  195. ##def fileWrite():
  196. ## appendMe = OverAllCost
  197. ## appendFile = open('exampleFile.txt','a')
  198. ## appendFile.write(str(appendMe))
  199.  
  200. def Ref(self):
  201. global OverAllCost
  202. global x
  203. global nameCustomer
  204. global TotalCost
  205. global PayTax
  206. global FinalCost
  207.  
  208. x = random.randint(1,9999)
  209. self.randomRef = str(x)
  210. self.rand.set(self.randomRef)
  211.  
  212. CoF=float(self.Fries.get())
  213. CoD=float(self.Drinks.get())
  214. CoFillet = float(self.Fillet.get())
  215. CoBurger=float(self.Burger.get())
  216. CoChicBurger = float(self.Chicken_Burger.get())
  217. CoCheese_Burger = float(self.Cheese_Burger.get())
  218. nameCustomer = self.customerName.get()
  219.  
  220.  
  221. CostofFries = CoF * 0.99
  222. CostofDrinks = CoD * 1.00
  223. CostofFillet = CoFillet * 2.99
  224. CostofBurger = CoBurger * 2.87
  225. CostofChicken_Burger = CoChicBurger * 2.89
  226. CostofCheese_Burger = CoCheese_Burger * 2.69
  227.  
  228. CostofMeal = "£", str('%.2f' % (CostofFries + CostofDrinks + CostofFillet + CostofBurger + CostofChicken_Burger + CostofCheese_Burger))
  229.  
  230. PayTax = ((CostofFries + CostofDrinks + CostofFillet + CostofBurger + CostofChicken_Burger + CostofCheese_Burger) * 0.2)
  231.  
  232. TotalCost = (CostofFries + CostofDrinks + CostofFillet + CostofBurger + CostofChicken_Burger + CostofCheese_Burger)
  233.  
  234. Ser_Charge = ((CostofFries + CostofDrinks + CostofFillet + CostofBurger + CostofChicken_Burger + CostofCheese_Burger)/99)
  235.  
  236. Service = "£", str('%.2f' % Ser_Charge)
  237.  
  238. OverAllCost = "£", str('%.2f' % (PayTax + TotalCost + Ser_Charge))
  239. FinalCost = ('%.2f' % (PayTax + TotalCost + Ser_Charge))
  240.  
  241. PaidTax = "£", str('%.2f' % PayTax)
  242.  
  243. self.Cost.set(CostofMeal)
  244. self.Tax.set(PaidTax)
  245. self.SubTotal.set(CostofMeal)
  246. self.Total.set(OverAllCost)
  247.  
  248. def qExit(self):
  249. self.root.destroy() #closes program
  250.  
  251.  
  252. def Reset(self):
  253. self.rand.set("") #Sets all fields to blank
  254. self.Fries.set("")
  255. self.Burger.set("")
  256. self.Fillet.set("")
  257. self.SubTotal.set("")
  258. self.Total.set("")
  259. self.customerName.set("")
  260. self.Drinks.set("")
  261. self.Tax.set("")
  262. self.Cost.set("")
  263. self.Chicken_Burger.set("")
  264. self.Cheese_Burger.set("")
  265.  
  266. def softwareHelp(self):
  267. #file = open('Help.txt','r').read()
  268. #print(file)
  269. os.system(r'%windir%\system32\notepad.exe "C:\Users\Geff\Documents\Computing22/Help.txt"')
  270.  
  271. def dbOpen(self):
  272. os.system(r'C:\Program Files\DB Browser for SQLite\DB Browser for SQLite.exe "C:\Users\Geff\Documents\Computing22/Orders.db"')
  273.  
  274.  
  275. ###########################################Database############################
  276. def databaseInput(self):
  277.  
  278. conn = sqlite3.connect('Orders.db')
  279. c = conn.cursor()
  280.  
  281. def create_table():
  282. c.execute('CREATE TABLE IF NOT EXISTS stuffToPlot(Reference REAL, Date TEXT, Name TEXT, SubTotal REAL, VAT REAL, Total REAL)')
  283.  
  284. ##def data_entry():
  285. ## c.execute("INSERT INTO stuffToPlot VALUES(145123542, '2016-01-01', 'Python', 55)")
  286. ## conn.commit() #Saving the updates to the database
  287. ## c.close() #closes cursor
  288. ## conn.close() #close the connection
  289.  
  290.  
  291. def dynamic_data_entry():
  292. timeVariable = time.time()
  293. date = str(datetime.datetime.fromtimestamp(timeVariable).strftime('%Y-%m-%d %H:%M:%S'))
  294. keyword = 'Pyhthon'
  295. value = random.randrange(0,10)
  296. c.execute("INSERT INTO stuffToPlot (Reference, Date, Name, SubTotal, VAT, Total) VALUES (?, ?, ?, ?, ?, ?)",
  297. (x, date, nameCustomer, TotalCost, PayTax, FinalCost)) ##insert into these columns, ? is for inserting stuff, then last bit is the variables you're inserting
  298. conn.commit()
  299.  
  300.  
  301.  
  302. create_table()
  303. #data_entry()
  304. dynamic_data_entry()
  305. c.close()
  306.  
  307. #================================================ Write/Print ============================
  308. def fileWrite(self):
  309. name = nameCustomer
  310. f = open(name + ".txt","w")
  311.  
  312.  
  313. #==========================================================================================
  314.  
  315.  
  316. class LoginFrame(Frame):
  317. def __init__(self, master):
  318. super().__init__(master)
  319.  
  320. self.label_1 = Label(self, text="Username")
  321. self.label_2 = Label(self, text="Password")
  322.  
  323. self.entry_1 = Entry(self)
  324. self.entry_2 = Entry(self, show="*")
  325.  
  326. self.label_1.grid(row=0, sticky=E)
  327. self.label_2.grid(row=1, sticky=E)
  328. self.entry_1.grid(row=0, column=1)
  329. self.entry_2.grid(row=1, column=1)
  330.  
  331. self.checkbox = Checkbutton(self, text="Keep me logged in")
  332. self.checkbox.grid(columnspan=2)
  333.  
  334. self.logbtn = Button(self, text="Login", command = self._login_btn_clickked)
  335. self.logbtn.grid(columnspan=2)
  336.  
  337. self.pack()
  338.  
  339. def _login_btn_clickked(self):
  340. #print("Clicked")
  341. username = self.entry_1.get()
  342. password = self.entry_2.get()
  343.  
  344. #print(username, password)
  345.  
  346. if username == "admin" and password == "password":
  347. tm.showinfo("Login info", "Welcome John")
  348. root.destroy()
  349. else:
  350. tm.showerror("Login error", "Incorrect username")
  351.  
  352.  
  353.  
  354.  
  355. root = Tk()
  356. lf = LoginFrame(root)
  357.  
  358. root.mainloop()
  359. root = Tk()
  360. mainGUI = gui(root)
  361. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement