[英]How can I prompt user for multiple inputs, then print summary to a file?
到目前為止,如果用戶選擇“ 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)要訪問變量,請使用其lookup_csv_file
部分中的.get()方法。 同樣,如果您想在其中放置一個值,則該變量還有一個.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
,則該命令將在初始化期間運行。
這些是我很難學習的一些要點,但是有了這些,您應該可以通過閱讀可用的文檔來快速學習!
我嘗試將代碼運行為“ python hdorders.py >> orders.txt”,但不會提示您出現問題
您沒有看到提示,因為您將標准輸出(提示也重定向到該位置)重定向到了orders.txt
文件。 最好在程序中打開文件,而無需在外殼上重定向:
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
運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.