我要做的是制作一个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中进一步插入图像。
我当时想做的是一个可以通过某种方式设置以检查最新的Entry-box的函数,但是我遇到了一个问题,即该函数可能是无限的,因此我必须动态创建新变量,因此我可以访问用户输入的信息。这些变量将保存信息,就像我的entry1
变量为externalAtendeesEntry
所做的一样。
我还必须动态地为更多条目创建变量。
如何动态创建潜在无限数量的变量?
我知道这是一种重新发布,但是我发现其他人都说您应该使用字典,但是在那种情况下它不可能是无限的。它只能是有限的,直到我的字典不再存在。
答案 0 :(得分:0)
对于一个,您不需要使用StringVar
。它只会使您的代码复杂化,而没有提供任何实际价值。答案的另一部分是将条目存储在列表中。
例如,创建一个名为addEntry
的函数,该函数创建一个条目并将其添加到列表中:
entries = []
...
def addEntry():
entry = tk.Entry(...)
entry.pack(...)
entries.append(entry)
要在以后获取值,只需遍历列表:
for entry in entries:
print(entry.get())
这样,您可以随时添加条目。例如,您可以绑定到<Any-KeyRelease>
以在用户键入时创建一个新条目(请确保仅在没有空白条目的情况下才这样做)。或者,绑定到<Return>
或<FocusOut>
,或者单击“新人”按钮,或者由您决定。