Python 3.x 使用TKinter不断增加的条目数量

Python 3.x 使用TKinter不断增加的条目数量,python-3.x,tkinter,tkinter-entry,Python 3.x,Tkinter,Tkinter Entry,我想做的是制作一个GUI,当你开始在一个输入框中输入时,另一个显示在你正在输入的框的正下方。然后,当你开始输入一个弹出的,另一个弹出。TKinter和Python是否可以实现这一点 编辑: 因此,我目前拥有的是: entry1 = StringVar() numberLabel3 = Label(window, text = "3. External meeting attendees") r+=1 numberLabel3.grid(column = 0, row = r, sticky =

我想做的是制作一个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
我使用图像模块和操作系统将图像进一步插入GUI中

我当时的想法是创建一个函数,我可以通过某种方式设置它来检查最新的输入框,但我遇到了一个问题,为了使它可能无限大,我必须动态创建新变量,以便访问用户输入的信息。这些变量将保存信息,就像my
entry1
变量为
externalatendesentry
保存信息一样。 我还必须动态地为更多的条目创建变量

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


我知道这是一种回复,但我发现的其他回复都说你应该使用字典,但在这种情况下,它不可能是无限的。它只能有限到我的字典不再存在的程度。

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

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

entries = []
...
def addEntry():
    entry = tk.Entry(...)
    entry.pack(...)
    entries.append(entry)
要在以后获取值,只需在列表上迭代:

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

这样,您可以随时添加条目。例如,您可以绑定到
,在用户键入时创建一个新条目(确保只有在没有空白条目时才这样做)。或者,绑定到
,或单击“新人”按钮,或您决定的其他方式。

请向我们展示您尝试过的内容。是的,很可能我无法在tkinter中直接向您展示,但我知道可以使用包装tkinter的PySimpleGUI。根据定义,这意味着它是“可能的”,这是它在PSG中的表现。当你在引擎盖下看的时候,它是这样做的,你绑定了一个函数来拾取输入到第一个输入框中的按键。然后,在该例程中,您获取输入的内容并设置另一个输入框的值。stringvar用于两者之间的通信。这与Bryan提供的答案相同或相似。用户是否可以直观地看到这一点?”因为我想做的是直观地创建一个新的输入框,这样用户仍然可以看到他/她在先前的框中输入的内容。但是另外一个好的详细的回答啊等等,我知道你在做什么了!谢谢,太棒了!