繁体   English   中英

将 Tkinter 条目小部件分组并创建一个 for 循环

[英]Grouping Tkinter entry widgets and creating a for loop

我是 Tkinter 的新手,只是想知道我是否可以将一些输入框分组,例如在列表中,然后对它们执行 for 循环。

我正在观看本教程视频并单击一个按钮,他们希望该按钮清除所有输入框,他们这样做是这样的:

# Create Submit fn for database
def submit():
    f_name.delete(0, END)
    l_name.delete(0, END)
    address.delete(0, END)
    city.delete(0, END)
    postcode.delete(0, END)

# Create entry textboxes
f_name = ttk.Entry(mainframe, width=30).grid(column=1, row=0)
l_name = ttk.Entry(mainframe, width=30).grid(column=1, row=1)
address = ttk.Entry(mainframe, width=30).grid(column=1, row=2)
city = ttk.Entry(mainframe, width=30).grid(column=1, row=3)
postcode = ttk.Entry(mainframe, width=30).grid(column=1, row=4)

# Create submit button
submit_btn = ttk.Button(mainframe, text="Add Record", width=20, command=submit).grid(column=0, row=6, pady=10)

而不是重复submit function 我想做这样的事情:

def submit():

entries = ttk.Entry(mainframe)

for entry in entries:
    entry.delete(0, END)

上面的 function 不起作用,但我正在寻找类似的东西以避免不必要的重复并拥有更清晰的代码。 这可能吗?

小部件是对象,并且可以将对象添加到列表中。 你这样做与你对字符串或整数或任何其他类型的 object 没有什么不同。

f_name = ttk.Entry(mainframe, width=30)
l_name = ttk.Entry(mainframe, width=30)
address = ttk.Entry(mainframe, width=30)
city = ttk.Entry(mainframe, width=30)
postcode = ttk.Entry(mainframe, width=30)

f_name.grid(column=1, row=0)
l_name.grid(column=1, row=1)
address.grid(column=1, row=2)
city.grid(column=1, row=3)
postcode.grid(column=1, row=4)

entries = [f_name, l_name, address, city, postcode]
...
for entry in entries:
    entry.delete(0, END)

您还可以使用字典而不是单个变量。 然后,您可以像执行任何其他字典一样遍历字典:

entries = {
    "f_name": ttk.Entry(...),
    "l_name": ttk.Entry(....),
    ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM