python - 如何提示用户进行多个输入,然后将摘要打印到文件中?
问题描述
到目前为止,如果用户选择“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”,它会将最终详细信息附加到与第一个订单相同的文件中。
解决方案
我发现当需要大量用户输入时,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()
命令将在初始化期间运行。
这些是我很难学习的一些细节,但是有了这些,您应该能够通过查看可用的文档来快速学习!
推荐阅读
- azure - add new custom metrics like "Memory Usage" in Azure webjob's Appinsights
- ajax - why does $.post() work but not fetch work
- java - Android 应用程序在加载时崩溃
- unity3d - unity3d 从 web 加载 spritesheet 和内存问题
- python - Python 等待 Slurm 工作?
- mysql - 我想导出没有“b”的csv文件
- html - 使用水平滚动固定的响应式和表头的引导表
- java - Mockito 如何将类型传递给返回 CompleteableFuture 的通用 supplyAsync 方法?
- php - Get the top selling product's current inventory in mysql
- python-3.x - 如何允许 python 递归计算超出设置的递归限制?