im working on this question: Write a Python program that will allow the user to order items from a menu in a restaurant.
The GUI should allow the customer to enter his or her name and telephone number.
The system must generate a random number to indicate the Order Number.
The customer should be allowed to choose: (1) any items from the salad menu, (2) any one of the starter menu, (3) any one of the main courses
When the user clicks the order button, the program should display the customer details (name and telephone number) as well as the details of the order based on his or her selections.
There should be a field that will display the total amount of the order.
6. The information, that is the order number and the Total amount of the order must be written to a text file after a successful transaction. Take care not to over write the previous information in the text file.
My program is working fine but I dnt know how to do bullet 6. Which is write the order number ad total amount to a text file without overwritting.
Here is my code: #Create a menu program
import random
from Tkinter import *
class App(Frame):
#GUI application
def __init__(self,master):
Frame.__init__(self,master)
self.grid()
self.create_widgets()
def create_widgets(self):
#Label to welcome the user
Label(self, text="Welcome to Costa's restaurant menu"
).grid(row=0, column=0, sticky=W)
#Label to request the name of the customer
Label(self, text="Customer Name: "
).grid(row=1, column=0, sticky=W)
self.ent_cust = Entry(self)
self.ent_cust.grid(row=1, column=1, sticky=W)
#Label to request the telephone number:
Label(self, text="Telephone number: "
).grid(row=1, column=2, sticky=W)
self.ent_tel = Entry(self)
self.ent_tel.grid(row=1, column=3, sticky=W)
#Label to generate a random order number
rnd = (int(random.randrange(50)) + 1)
Label(self, text=("Your order number " + str(rnd))).grid(row=0, column=2, sticky=W)
n = 4
#MENU items to choose from
#the salads
Label(self, text="Select any items from the salad menu: @R30").grid(row=n, column=0, sticky=W)
self.has_greensalad = BooleanVar()
# the green salad
Checkbutton(self, text="Special mixed green salad"
, variable=self.has_greensalad).grid(row=(n + 1), column=0, sticky=W)
#the blue cheese salad
self.has_bluecheese = BooleanVar()
Checkbutton(self, text="Blue cheese salad"
, variable=self.has_bluecheese).grid(row=(n + 1), column=1, sticky=W)
#the greek salad
self.has_greek = BooleanVar()
Checkbutton(self, text="Greek salad"
, variable=self.has_greek).grid(row=(n + 1), column=2, sticky=W)
#the starters
z = (n + 2)
Label(self, text="Select any one of the starter menu: @60:"
).grid(row=z, column=0, sticky=W)
#the oysters
self.startermenu = StringVar()
Radiobutton(self, text="6 oysters",
variable=self.startermenu, value="6 oysters"
).grid(row=(z + 1), column=0, sticky=W)
#the prawns
Radiobutton(self, text="Prawns",
variable=self.startermenu, value="Prawns"
).grid(row=(z + 1), column=1, sticky=W)
#chicken wings
Radiobutton(self, text="Chicken wings",
variable=self.startermenu, value="Chicken wings"
).grid(row=(z + 1), column=2, sticky=W)
#main course
x = (z + 3)
Label(self, text="Select any one of the main menu @ R150"
).grid(row=x, column=0, sticky=W)
self.maincourse = StringVar()
main_courses = ["Hamburger with chips", "Lasagne","Pasta Carbonara","Risotto alla milanese"]
column = 0
for main in main_courses:
Radiobutton(self,
text = main,
variable=self.maincourse,
value = main
).grid(row=(x + 1), column=column, sticky=W)
column += 1
q = (x + 5)
Button(self, text='Place the Order', command=self.determine_order).grid(row=q, column=1, sticky=W)
self.txt_order = Text(self, width=75, height=10, wrap=WORD)
self.txt_order.grid(row=(q + 1), column=0, columnspan=4)
Label(self, text="Total: R",
).grid(row=(q + 11)
, column=0, sticky=W)
self.txt_total = Text(self, width=8, height=1, wrap=NONE)
self.txt_total.grid(row=(q + 11), column=0)
def determine_order(self):
""" Fill text box with order based on user input. """
totalprice = 0
salads = 30
starters = 60
mainmenu = 150
name = self.ent_cust.get()
tel = self.ent_tel.get()
salads = ""
if self.has_greensalad.get():
salads += "Special mixed Green Salad\n"
totalprice = (totalprice + starters)
if self.has_bluecheese.get():
salads += "Blue cheese salad\n"
totalprice = (totalprice + starters)
if self.has_greek.get():
salads += "Greek Salad\n"
totalprice = (totalprice + starters)
if (salads == ""):
salads = "No salads ordered\n"
totalprice = (totalprice + 0)
startermenu = self.startermenu.get()
if (len(startermenu) == 0):
startermenu = "You didn't order a starter"
else:
totalprice = (totalprice + starters)
maincourse = self.maincourse.get()
if (len(maincourse) == 0):
maincourse = "You didn't order a main course"
else:
totalprice = (totalprice + mainmenu)
order = ((((((((name + " (") + tel) + ") ordered from the salad menu:\n") + salads) + "\nFrom the starters menu:\n ") + startermenu) + "\n\nFrom the main menu:\n") + maincourse)
self.txt_order.delete(0.0, END)
self.txt_order.insert(0.0, order)
self.txt_total.delete(0.0, END)
self.txt_total.insert(0.0, float(totalprice))
def main():
root = Tk()
root.title("Costa's Restaurant Menu")
app = App(root)
root.mainloop()
main()
Use open with mode "a" to append the data. Using mode "w" will overwrite existing data.
with open('myfile', mode='a') as fp:
fp.write('data')
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.