我正在尝试制作一个GUI,其中tkinter条目的数量由用户决定。
我的代码:
from tkinter import*
root = Tk()
def createEntries(quantity):
for num in range(quantity):
usrInput = Entry(root, text = num)
usrInput.pack()
createEntries(10)
root.mainloop()
此代码基于我发现的this tutorial:
for num in range(10):
btn = tkinter.button(window, text=num)
btn.pack(side=tkinter.LEFT)
问题是我只能访问最新创建的小部件中的输入,因为它们都具有相同的名称。有没有办法动态创建具有唯一名称的小部件?
任何建议将不胜感激
答案 0 :(得分:1)
解决方案是将小部件存储在列表或字典之类的数据结构中。例如:
entries = []
for num in range(quantity):
usrInput = Entry(root, text = num)
usrInput.pack()
entries.append(usrInput)
稍后,您可以遍历此列表以获取值:
for entry in entries:
value = entry.get()
print("value: {}".format(value))
当然,您可以按数字访问特定条目:
print("first item: {}".format(entries[0].get()))
答案 1 :(得分:0)
使用以下代码,您可以根据Var“字段”调整按钮和条目的数量。希望对您有帮助
from tkinter import *
fields = 'Last Name', 'First Name', 'Job', 'Country'
def fetch(entries):
for entry in entries:
field = entry[0]
text = entry[1].get()
print('%s: "%s"' % (field, text))
def makeform(root, fields):
entries = []
for field in fields:
row = Frame(root)
lab = Label(row, width=15, text=field, anchor='w')
ent = Entry(row)
row.pack(side=TOP, fill=X, padx=5, pady=5)
lab.pack(side=LEFT)
ent.pack(side=RIGHT, expand=YES, fill=X)
entries.append((field, ent))
return entries
if __name__ == '__main__':
root = Tk()
ents = makeform(root, fields)
root.bind('<Return>', (lambda event, e=ents: fetch(e)))
b1 = Button(root, text='Show',
command=(lambda e=ents: fetch(e)))
b1.pack(side=LEFT, padx=5, pady=5)
b2 = Button(root, text='Quit', command=root.quit)
b2.pack(side=LEFT, padx=5, pady=5)
root.mainloop()