使用 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)
我正在尝试创建一个简单的对话框,您可以在其中输入数字。然而,输入的数量确实取决于数据集,从技术上讲,人们使用它来将行输入到数据集中。
我不知道如何让它工作。
我试过将 '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)