有没有一种方法可以动态创建Entry并将其输入添加到列表| Tkinter

时间:2020-02-23 09:11:43

标签: python-3.x tkinter tkinter-entry

第一次在这里提问,但是我试图创建一个动态创建Entry的程序,但是我不知道如何从Entry中获取文本并将其放入列表中。

我在这里查看的问题是:Getting values of dynamically generated Entry fields using Tkinter,但是我无法弄清楚如何使代码在我的特定情况下有效,并且在过去五年中情况可能发生了变化。

任何反馈将不胜感激。

示例:

Working with (List+{Capturer}) that holds (1 2 3 4)

第一个将获得类似于“ username1”的值,第二个将获得“ username2”,依此类推,其余的动态添加的条目均如此。

如果有更聪明的方法,或者您希望我显示所有代码,请告诉我!

编辑: 这是我添加按钮的代码

tk.Entry(TAB1, textvariable=username[i])
tk.Entry(TAB1, textvariable=username[i])

当用户想要添加三行nextRow = 4 usernames = [] def addInput(): global nextRow entry = tk.Entry(TAB1) entry.grid(row=nextRow, column=0, sticky='WE', padx=10, pady=2) ent2 = tk.Entry(TAB1).grid(row=nextRow, column=1, sticky='WE', padx=10, pady=2) ent3 = tk.Entry(TAB1).grid(row=nextRow, column=2, sticky='WE', padx=10, pady=2) nextRow += 1 usernames.append(entry.get()) 的新行时,我还有一个使用addInput()的按钮

tk.Entry

目前我不确定如何添加条目并跟踪其值。

1 个答案:

答案 0 :(得分:0)

通常来说,您根本不需要使用textvariable。只需将条目保留在列表中,然后引用列表以获取值。使用textvariable是可以的,但是大多数人使用它的方式只是增加了开销,却没有提供任何实际价值。

entries = []
for i in range(10):
    entry = tk.Entry(TAB1)
...
for i in range(10):
    print(f"Entry {i} has value {entries[i].get()}")

如果您确实要使用textvariable,则仍然可以使用相同的技术,但是您可以保存变量而不是条目。

vars = []
for i in range(10):
    var = tk.StringVar()
    vars.append(var)
    entry = tk.Entry(Tab1, textvariable=var)