使用Python编写文本文件

时间:2013-09-05 13:31:47

标签: python text

我正在研究这个问题: 编写一个Python程序,允许用户从餐馆的菜单中订购商品。

  1. GUI应该允许客户输入他或她的名字 电话号码。

  2. 系统必须生成一个随机数来表示订单 号。

  3. 应允许客户选择: (1)沙拉菜单中的任何项目, (2)任何一个入门菜单, (3)任何一门主要课程

  4. 当用户点击订单按钮时​​,程序应显示 客户详细信息(姓名和电话号码)以及 订单的详细信息基于他或她的选择。

  5. 应该有一个字段显示订单的总金额。

  6. 6。信息,即订单号和总金额 成功交易后,必须将订单写入文本文件。 注意不要在文本文件中覆盖以前的信息。

    我的程序工作正常,但我不知道怎么做子弹6.哪个是将订单号广告总金额写入文本文件而不会覆盖。

    这是我的代码:     #创建一个菜单程序

     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()
    

1 个答案:

答案 0 :(得分:0)

使用open模式" a"附加数据。使用模式" w"将覆盖现有数据。

with open('myfile', mode='a') as fp:
    fp.write('data')