使用 TKinter 不断扩大的条目数量

Ever expanding amount of Entries with TKinter

我想做的是制作一个 GUI,当您开始在一个输入框中输入时,另一个会出现在您正在输入的输入框的正下方。然后当您开始输入时,弹出的那个,另一个弹出。这对 TKinter 和 Python 可行吗?

编辑:

所以我目前拥有的是:

entry1 = StringVar()
numberLabel3 = Label(window, text = "3. External meeting attendees")
r+=1
numberLabel3.grid(column = 0, row = r, sticky = W)
externalAtendeesLabel = Label(window, text = "input name of external meeting atendee: ")
r+=1
externalAtendeesLabel.grid(column = 1, row = r, sticky = E)
externalAtendeesEntry = Entry(window, textvariable = entry1)
externalAtendeesEntry.grid(column = 2, row = r)
#Note to self: Find a smart way of dynamically expanding this "list" of entries

(上面和下面还有更多代码,但这是我问题的相关代码)

其中 r 是我创建的一个变量,可以更轻松地将内容插入到我相当长的代码的中间。

我使用的导入是:

from tkinter import *
from PIL import ImageTk
from PIL import Image
import os

我使用图像模块 OS 在我的 GUI 中进一步插入图像。

我当时想的是制作一个功能,我可以通过某种方式设置它来检查最新的输入框,但是我 运行 遇到了一个问题,即如果这个功能可能是无限的,我将不得不动态创建新变量,以便我可以访问用户输入的信息。这些变量将保存信息,就像我的 entry1 变量为 externalAtendeesEntry 所做的一样。 我还必须为更多条目动态创建变量。

如何动态创建可能无限量的变量?

我知道这是一种重新post,但我发现的其他人都说你应该使用字典,但在那种情况下它不能是无限的。只能有限到我的字典都没有了

首先,您不需要使用 StringVar。它只会使您的代码复杂化,而不会提供任何实际价值。答案的另一部分是将条目存储在列表中。

例如,创建一个名为 addEntry 的函数,它创建一个条目并将其添加到列表中:

entries = []
...
def addEntry():
    entry = tk.Entry(...)
    entry.pack(...)
    entries.append(entry)

要在以后获取值,只需遍历列表即可:

for entry in entries:
    print(entry.get())

有了它,您可以随时添加条目。例如,您可以绑定到 <Any-KeyRelease> 以在用户键入时创建一个新条目(确保仅在没有空白条目的情况下才这样做)。或者,绑定到 <Return><FocusOut>,或者单击 "new person" 按钮,或者您决定的其他方式。