首页 > 解决方案 > 如何提示用户进行多个输入,然后将摘要打印到文件中?

问题描述

到目前为止,如果用户选择“n”不订购另一个硬盘驱动器,但需要写入文件,我可以在最后打印。我尝试将代码运行为“python hdorders.py >> orders.txt”,但它不会提示问题;只显示一个空白行,如果我使用 Ctrl-C 中断,它会在文件中写入空白条目和 while 循环。我希望这是有道理的。

ui = raw_input("Would you like to order more hard drives?(y/n) ")
if ui == 'n':
    print '\n','\n',"**** Order Summary ****",'\n',row,'\n',"Number of HD's:",b,'\n',"Disk Slot Position(s):",c,'\n',"Disk Size(s):",d,"GB",'\n',"Dimensions:",e,'\n','\n',
    endFlag = True

我也希望这样,如果他们选择“y”,它将保存到一个文件并重新开始另一个磁盘订单(首先将以前的信息保存到文件中)。然后一旦他们完成(例如通过程序两次)并选择“n”,它会将最终详细信息附加到与第一个订单相同的文件中。

标签: pythonfileinputprinting

解决方案


我发现当需要大量用户输入时,GUI 可能是最佳选择。如果我的脚本使用少量我可以解析出来的用户输入,我只会尝试进行命令行输入。就个人而言,我会为每个输入创建一个 tkinter 组合框,并在 GUI 底部有一个按钮,用于处理所有输入并将它们写入文件。这是我如何制作 GUI 的框架

import tkinter as tk


class OOP:
    def __init__(self):
        self.win = tk.Tk()
        self.win.title("My Title")
        self.user_input = tk.StringVar()
        self.create_widgets()

    def lookup_csv_file(self):
        file = self.user_input.get()
        print(file)

    def create_widgets(self):
        tk.Button(self.win, text="Lookup CSV file", width=42, command=self.lookup_csv_file).pack(expand=1, fill='both')
        tk.Entry(self.win, textvariable=self.user_input).pack(expand=1, fill='both')


app = OOP()
app.win.mainloop()

这段代码显示了几个需要注意的重要事项:

1) 在大多数情况下,应使用面向对象编程 (OOP) 制作 GUI

2)您要保留的变量应在__init__部分中初始化为 tk.StringVar()、tk.IntVar() 等。然后附加到 GUI 部分(如create_widgets(self):部分中所示条目的文本变量附加到我们的变量

3) 要访问变量,请使用其 .get() 方法,如lookup_csv_file部分所示。如果您想在其中放置一个值,该变量还有一个 .set() 方法。例如,您可以执行self.user_input = tk.StringVar()后续操作self.user_input.set('Default CSV file'),GUI 将使用所示进行初始化。

4) 将命令分配给按钮时,不要包括(). 如果不是command=self.lookup_csv_file你把command=self.lookup_csv_file()命令将在初始化期间运行。

这些是我很难学习的一些细节,但是有了这些,您应该能够通过查看可用的文档来快速学习!


推荐阅读