Python Tkinter循环中的名称小部件

Python Tkinter循环中的名称小部件,python,sql,tkinter,Python,Sql,Tkinter,我目前正在Tkinter中创建一个文本框“网格”,以模拟高尔夫记分卡系统。我目前正在使用下面的代码创建这个网格。当我将这些文本框中的条目存储到Microsoft Access数据库中时,如果创建的小部件没有唯一的名称,如何使用.get()函数从各个文本框中检索值。我真的不想手动创建105个文本框,尽管我知道这会起作用。感谢您的帮助 for x in range(1, 22): for y in range(4, 9): e

我目前正在Tkinter中创建一个文本框“网格”,以模拟高尔夫记分卡系统。我目前正在使用下面的代码创建这个网格。当我将这些文本框中的条目存储到Microsoft Access数据库中时,如果创建的小部件没有唯一的名称,如何使用.get()函数从各个文本框中检索值。我真的不想手动创建105个文本框,尽管我知道这会起作用。感谢您的帮助

        for x in range(1, 22):
            for y in range(4, 9):
                e  = tk.Text(self,
                             height=1,
                             width=3)

                e.grid(column=x,
                       row=y)

你可以使用一个列表来保存输入值,然后在循环后读取它们。这是我通常做的

尝试:

及之后:

for x in entries_list:
    x.get(1.0, END)

在本例中,我将使用字典,因为它允许您根据小部件的网格位置引用它们。您可以这样做:

text_widgets = {}
for x in range(1, 22):
    for y in range(4, 9):
        e  = tk.Text(self,
                     height=1,
                     width=3)

        e.grid(column=x,
               row=y)

        text_widgets[(x, y)] = e
这允许您在以后按位置访问小部件-因此,如果您需要第10列第7行中小部件的值,您可以使用:

text_widgets[(10, 7)].get('1.0', 'end-1c') 

从技术上讲,文本小部件索引不是浮点数。它们是
格式的字符串<代码>1.0是无害的,但是您将得到与使用
1.10
不同的结果。
text_widgets[(10, 7)].get('1.0', 'end-1c')