Как создать виджеты динамической записи в tkinter на основе пользовательских данных и сохранить данные из этих виджетов записи в списке - PullRequest
0 голосов
/ 08 мая 2019

Я новичок в python, и в своем коде я хочу создать виджеты ввода, основанные на пользовательском вводе, а затем сохранить входные данные в списке, проблема в том, что значения, хранящиеся в списке, не относятся к типу I также не может использовать список

def displayinput():
    r = var.get()

    for x in range(1, r + 1):

        Label_max = Label(master, text="T MAX").grid(row=11 + x,column=4)

        Lbael_min = Label(master, text="T MIN").grid(row=11 + x, column=6)

        list_1.append(Entry(master).grid(row=11+x,column=5))
        list_2.append(Entry(master).grid(row=11+x,column=7))
        x = x + 1

Здесь var - ввод от пользователя для количества полей ввода

1 Ответ

0 голосов
/ 08 мая 2019

Проблема в том, что сохраняется возвращаемое значение функции сетки, которое в каждом случае равно None. Чтобы иметь возможность обрабатывать данные элементов Entry, вы должны создать список переменных и передать в качестве аргумента textvariable экземплярам Entry.

def displayinput():
    r = var.get()

    for x in range(1, r + 1):

        Label_max = Label(master, text="T MAX").grid(row=11 + x,column=4)

        Lbael_min = Label(master, text="T MIN").grid(row=11 + x, column=6)

        list_1.append(StringVar())
        list_2.append(StringVar())
        Entry(master, textvariable=list_1[-1]).grid(row=11+x,column=5)
        Entry(master, textvariable=list_2[-1]).grid(row=11+x,column=7)
        x = x + 1

Или вы можете сохранить экземпляры Entry и получить их входные данные:

def displayinput():
    r = var.get()

    for x in range(1, r + 1):

        Label_max = Label(master, text="T MAX").grid(row=11 + x,column=4)

        Lbael_min = Label(master, text="T MIN").grid(row=11 + x, column=6)

        list_1.append(Entry(master))
        list_2.append(Entry(master))
        list_1[-1].grid(row=11+x,column=5)
        list_2[-1].grid(row=11+x,column=7)
        x = x + 1
...