从条目小部件Tkinter中检索文本

时间:2015-04-17 00:53:49

标签: python loops variables for-loop tkinter

所以我知道如何使用get函数从单个条目小部件中检索文本,但现在我尝试使用for循环同时创建多个条目小部件。一旦用户输入文本,我怎样才能返回并从任何一个条目小部件中检索文本?

rows=11
for line in range(10):
    rows=rows+1
    widget = Tk.Entry(self.frame)
    widget.grid(row=rows, column=5)

4 个答案:

答案 0 :(得分:1)

widgets = []

for i in range(11, 23):
    widgets.append(Tk.Entry(self.frame))
    widget[i-11].grid(row = i, column = 5)

答案 1 :(得分:1)

问题在于,所有窗口小部件对象都被分配给引用,并且循环的每次下一次迭代都未被引用。解决此问题的方法是创建一个列表并将这些小部件添加到列表中:

entries = []
for line in range(10):
    rows = rows + 1
    widget = Tk.Entry(self.name)
    widget.grid(row = rows, column = 5)
    entries.append(widget)          # Add this line to your code

现在,要访问特定的输入框,您只需在数组中找到它。因此,例如,第二个框将在entries[1]找到(因为它基于0)。

答案 2 :(得分:1)

您遇到的根本问题是您没有任何类型的数据结构。您熟悉list类型吗?

rows=11
entries = [Tk.Entry(self.frame) for item in range(10)]
for item in entries:
    rows=rows+1
    item.grid(row=row, column=5)

这会创建一个listEntry小部件,然后将listgrid每个小部件连接成一行(从12开始)。您可以按索引访问list项,例如entries[0]代表Entry

答案 3 :(得分:1)

要直接回答您的问题,您需要get()方法,该方法可用于Entry类。要获取窗口小部件对象的值,代码将如下所示:

myValue = widget.get()

请注意,正如其他人所说,你的" for"循环实际上不会创建10个Entry对象。由于您不断将新的Entry对象重新分配给变量" widget",因此您创建的旧Entry对象将被取消引用。而不是将每个新的Entry对象分配给变量" widget"而是将它们附加到列表中。