Мне поручено создать систему управления запасами для магазина комиксов в качестве оценки школьного питона. В настоящее время у меня есть словарь, в котором есть названия комиксов и стандартные значения этих комиксов, импортированных из файла CSV;
comic_books = {}
with open('data.csv', 'r+', newline='') as csvfile:
csvreader = csv.reader(csvfile)
for row in csvreader:
comic_books[row[0]] = int(row[1])
Одно из требований программы - обеспечить, чтобы пользователь мог видеть все комиксы сразу. Для этого я просто создал два виджета меток для каждого ключа в своем словаре, используя функцию vars()
(наряду с некоторым форматированием, чтобы такие вещи, как пробелы в комических именах, не вызывали конфликтов);
itteration = 2
for item in comic_books:
vars()[item.replace(" ", "") + "Stock"] = Label(main, text=item+":")
vars()[item.replace(" ", "") + "Stock"].grid(column=1, row=itteration, padx=5)
vars()[item.replace(" ", "") + "StockAmount"] = Label(main, text=comic_books[item])
vars()[item.replace(" ", "") + "StockAmount"].grid(column=2, row=itteration, padx=5)
itteration += 1
Я в итоге получил результат ниже, который работает как ожидалось:

По сути, моя проблема в том, что я пытаюсь ссылаться на одну из этих переменных позже в моем коде (в частности, это часть кода, которая запускается, когда пользователь продает комикс, чтобы обновить метки новыми значения);
for item in comic_books:
vars()[item.replace(" ", "") + "StockAmount"].config(text=comic_books[item])
Это не работает, и всякий раз, когда программа пытается запустить строку выше, я получаю эту ошибку:
File "C:\Users\XXX\Desktop\pythonAsessment2\test.py", line 114, in sellProcess
vars()[item.replace(" ", "") + "Stock"].config(text=comic_books[item])
KeyError: 'Comic2Stock'
Спасибо!