简体   繁体   中英

Write a text file using Python

im working on this question: Write a Python program that will allow the user to order items from a menu in a restaurant.

  1. The GUI should allow the customer to enter his or her name and telephone number.

  2. The system must generate a random number to indicate the Order Number.

  3. 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

  4. 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.

  5. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM