使用 tk 创建一个简单的对话框,它具有可变数量的输入,然后输出它们

Creating a simpledialog with tk that has a variable number of inputs and then outputting them

我正在尝试创建一个简单的对话框,您可以在其中输入数字。然而,输入的数量确实取决于数据集,从技术上讲,人们使用它来将行输入到数据集中。

我不知道如何让它工作。

我试过将 'e1' 对象放入字典中,然后再使用它们,但是这给出了一个未知的选项错误

class MyDialog(simpledialog.Dialog):
def body(self, master):
    d2={}
    f={}
    for i in range(len(df_data_1.columns) -1 ):
        Label(master, text=df_data_1.columns[i]).grid(row=i)
        self.e1 = Entry(master)
        self.e1.grid(row=i, column=1)
        d2[df_data_1.columns[i]] = self.e1.get()

        print(d2[df_data_1.columns[i]])
    return self.e1
    print(self.e1)
    f[df_data_1.columns[i]]=self.e1
    return d2 # initial focus
    return f
    print(f)

def apply(f):
    for x in range(len(df_data_1.columns) -1 ):
        d2[df_data_1.columns[x]] = f[df_data_1.columns[x]].get()
        print(d2[df_data_1.columns[x]])
    first = d2
    print(first)

root = Tk()
d = MyDialog(root)
print (d.result)  

您需要将实例存储在列表中。您的代码的问题是您在循环的每次迭代中都覆盖了 self.e1

它看起来像这样(未经测试,因为你没有给我们代码,我们可以 运行 重现这个问题):

self.entries = []
for i in range(len(df_data_1.columns) -1 ):
    Label(master, text=df_data_1.columns[i]).grid(row=i)
    entry = Entry(master)
    entry.grid(row=i, column=1)
    self.entries.append(entry)

您稍后可以像这样遍历所有条目:

for entry in self.entries:
    value = entry.get()
    print("value:", value)