【问题标题】:Is there a way to dynamically create Entry's and add their input to a list | Tkinter有没有办法动态创建条目并将其输入添加到列表中?特金特
【发布时间】:2020-02-23 09:11:43
【问题描述】:

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

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

如有任何反馈,我们将不胜感激。

例子:

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

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

如果有更聪明的方法或者你想让我展示我所有的代码,请告诉我!

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

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())

当用户想要添加一个包含三个 tk.Entry 的新行时,我还有一个使用 addInput() 的按钮

tk.Button(TAB1, text='Add', command=addInput, font=("Consolas", 12), width = 8).grid(row=1, column=1, sticky='W')

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

【问题讨论】:

  • “在过去的五年里,事情可能发生了变化。” - 在这种情况下不是。 Tkinter 的变化非常很慢,并且非常重视向后兼容性非常

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


【解决方案1】:

一般来说,您根本不需要使用文本变量。只需将条目保存在列表中,然后参考列表以获取值。 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)

【讨论】:

  • 非常感谢您的回答,因为我是 python 和 Tkinter 的新手,我不清楚如何让这段代码为我工作。我将编辑并为我的问题添加更多信息,希望我能找到一种方法让它在我的场景中工作
猜你喜欢
  • 1970-01-01
  • 2020-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-08
  • 2023-01-12
  • 2011-11-22
相关资源
最近更新 更多