0

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

我无法弄清楚如何让它工作。

我尝试将“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)  
4

1 回答 1

0

您需要将实例存储在列表中。您的代码的问题是您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)
于 2019-01-10T16:03:39.653 回答