簡體   English   中英

如何提示用戶進行多次輸入,然后將摘要打印到文件中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM