对 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
函数,而是想做这样的事情:
def submit():
entries = ttk.Entry(mainframe)
for entry in entries:
entry.delete(0, END)
上面的那个函数不起作用,但我正在寻找类似的方法来避免不必要的重复并获得更清晰的代码。这可能吗?
小部件是对象,对象可以添加到列表中。你做这件事与你做字符串或整数或任何其他类型的对象没有什么不同。
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(....),
...
}
我是 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
函数,而是想做这样的事情:
def submit():
entries = ttk.Entry(mainframe)
for entry in entries:
entry.delete(0, END)
上面的那个函数不起作用,但我正在寻找类似的方法来避免不必要的重复并获得更清晰的代码。这可能吗?
小部件是对象,对象可以添加到列表中。你做这件事与你做字符串或整数或任何其他类型的对象没有什么不同。
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(....),
...
}