循环中的Tkinter名称小部件

时间:2017-05-03 11:47:20

标签: python sql tkinter

我目前正在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)

2 个答案:

答案 0 :(得分:1)

您可以使用列表来保存条目值,并在循环之后读取它们。这就是我通常所做的。

尝试:

entries_list = []
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)
                entries_list.append(e)

之后:

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

答案 1 :(得分:1)

在这种情况下,我会使用字典,因为它允许您根据网格位置引用窗口小部件。你可以这样做:

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')