首页 > 解决方案 > 如何根据用户输入在 tkinter 中创建动态条目小部件并将这些条目小部件的输入存储在列表中

问题描述

我是 python 的初学者,在我的代码中,我想根据用户输入创建条目小部件,然后将输入存储在列表中,问题是列表存储的值不是我无法的类型也使用列表

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 是用户输入的输入框数量

标签: python-3.xtkintertkinter-entry

解决方案


问题是存储了网格函数的返回值,在每种情况下都是 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

推荐阅读