Как я могу запросить у пользователя несколько входов, а затем распечатать сводку в файл? - PullRequest
0 голосов
/ 29 января 2019

Пока что я могу печатать в конце, если пользователь выбирает «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», окончательные данные будут добавлены в тот же файл, что и первый заказ.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Я пытался запустить код как '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.

0 голосов
/ 29 января 2019

Я обнаружил, что когда требуется расширенный пользовательский ввод, лучшим вариантом может быть графический интерфейс.Я пытаюсь вводить данные только из командной строки, если мой сценарий использует небольшое количество пользовательских данных, которые я могу аргументировать.Лично я бы сделал комбобокс 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 () и т. Д., А затем присоединены к разделам графического интерфейса пользователя (как показано в *Раздел 1009 *. Текстовая переменная записи присоединена к нашей переменной

3) Для доступа к переменной вы используете ее метод .get (), как показано в разделе lookup_csv_file.Также переменная имеет метод .set (), если вы хотите поместить туда значение.Например, вы можете выполнить self.user_input = tk.StringVar(), а затем self.user_input.set('Default CSV file'), и графический интерфейс будет инициализирован с показанным на рисунке.

4) При назначении команд кнопкам не включайте ().Если вместо command=self.lookup_csv_file вы поставите command=self.lookup_csv_file(), команда будет выполняться во время инициализации.

Это некоторые из тонких моментов, которые мне было трудно выучить, но с этим вы сможете быстро научиться,просматривая имеющуюся документацию!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...