как сохранить поле ввода в словаре

#python #tkinter #tkinter-entry

Вопрос:

у меня есть поле создать автоматический ввод

но значения печатают словарь

пример {[«ent1″:»компьютер»,»ent2″: «1800»], [«ent1″:»ноутбук», «ent2″:»2000»], [«ent1″:»мышь»,»ent2″: «500»]}

 from tkinter import *

class sample:
    def __init__(self, root):
        self.root = root
        self.root.geometry("500x500")
        self.all_entries = list()

        showButton = Button(root, text='Show all text',command= self.showEntries)
        showButton.pack()

        addboxButton = Button(root, text='<Add Time Input>', fg="Red", command=self.addBox)
        addboxButton.pack()

    def addBox(self):
        frame = Frame(root)
        frame.pack()

        self.ent1 = Entry(frame)
        self.ent1.grid(row=1, column=0)

        self.ent2 = Entry(frame)
        self.ent2.grid(row=1, column=1)

        self.all_entries.append([self.ent1,self.ent2])

    def showEntries(self):

        values = [[entry.get() for entry in entry_set] for entry_set in self.all_entries]
        print(values)

root = Tk()
obj = sample(root)
root.mainloop()

 

Комментарии:

1. Является {["ent1":'computer',"ent2": '1800'], ["ent1":'laptop', "ent2":'2000'], ["ent1":'mouse',"ent2": '500']} ли ваш ожидаемый результат или это результат, который в настоящее время выдает программа? В любом случае, это вдвойне неправильный синтаксис Python.

Ответ №1:

Если вы хотите напечатать в списке словаря, измените

 values = [[entry.get() for entry in entry_set] for entry_set in self.all_entries]
 

Для

 values = [{f"ent{i}":entry.get() for i,entry in enumerate(entry_set,1)} for entry_set in self.all_entries]
 

На выходе print(values) будет что-то вроде:

 [{'ent1': 'value1', 'ent2': 'value2'}, {'ent1': 'hello', 'ent2': 'world'}]