如何提示用户输入多个输入,然后将摘要打印到文件?



到目前为止,如果用户选择"n"不订购另一个硬盘驱动器,但需要写入文件,我可以在最后打印。我尝试以"python hdorders.py>> 订单.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",它将最终详细信息附加到与第一个订单相同的文件中。

我发现当需要大量用户输入时,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)在大多数情况下,GUI应该使用面向对象编程(OOP)进行

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_filecommand=self.lookup_csv_file()则该命令将在初始化期间运行。

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

我尝试以"python hdorders.py>> order.txt"运行代码,但它不会提示问题

您看不到提示,因为您将标准输出(提示也重定向到文件orders.txt。最好在程序中打开文件,而无需在 shell 上重定向:

if ui == 'n':
orders = open('orders.txt', 'a')    # 'a' for appending
print >>orders, 'n','n',"**** Order Summary ****",'n',row,'n',"Number of HDs:",b,…
orders.close()

- 以python hdorders.py运行。

相关内容

最新更新