Python 无法接收给定数量的条目数据:TypeError:列表索引必须是整数或切片,而不是条目

Python 无法接收给定数量的条目数据:TypeError:列表索引必须是整数或切片,而不是条目,python,python-3.x,tkinter,tkinter-entry,Python,Python 3.x,Tkinter,Tkinter Entry,我写了一些代码,可以根据用户的数字输入自动创建输入框 当尝试通过常规按钮命令.get()从这些输入框中获取数据时,我遇到以下错误: TypeError: list indices must be integers or slices, not Entry 代码如下: ply_name = [] ply_θ = [] tk = [] i = 0 for i in name_count: n_n = (n_count[i]).get()

我写了一些代码,可以根据用户的数字输入自动创建输入框

当尝试通过常规按钮命令
.get()
从这些输入框中获取数据时,我遇到以下错误:

TypeError: list indices must be integers or slices, not Entry
代码如下:

ply_name = []
ply_θ = []
tk = []
i = 0

        for i in name_count:
            n_n = (n_count[i]).get()
            n.append(n_n)


            n_a = (a_count[i]).get()
            a.append(n_a)

            n_t = (t_count[i]).get()
            t.append(n_t)

            i += 1
            if i == given_count:
                break
我知道给定的_计数值是正确的,因为它被进一步用于将相关的输入框添加到my grid系统中

错误似乎在于i值。 无论我如何尝试,只要我不能作为索引值,我就会得到同样的错误


任何帮助都是非常感激的

要跟踪您的条目,您需要保留一个参考。 如果你只是储存一个数字或一个字符,它没有任何参考。 这是参考资料

让我们考虑一下这段代码:

import tkinter as tk


root = tk.Tk()

my_entries = []

for _ in range(5):
    x = tk.Entry(root)
    x.pack()
    my_entries.append(x)
    print(x)

root.mainloop()
如果运行此代码,将打印以下内容:

.!entry
.!entry2
.!entry3
.!entry4
.!entry5
这些是tkinter的Id,它为您将创建的每个小部件创建。 Python本身通过我们可以使用的Python_id知道这些元素:

print(id(x))
因此,如果我们使用id(x)运行此代码,则会为我打印以下内容:

54022032
59532048
59532976
59532144
59533040
因此,你要做的一个充分的例子是:

import tkinter as tk


root = tk.Tk()

my_entries = []

for _ in range(5):
    x = tk.Entry(root)
    x.pack()
    my_entries.append(x)
    print(x)
def auto_fill():
    for entry in (my_entries):
        entry.insert(0, str(entry))

b = tk.Button(root, text='autofill', command=auto_fill)
b.pack()

def pprint():
    for entry in my_entries:
        print(entry.get())
b2 = tk.Button(root, text='print', command=pprint)
b2.pack()

root.mainloop()

希望这对我有帮助

太好了这对我的代码有很大的帮助和简化!我在列清单来记录参赛人数,诸如此类的废话太长了!谢谢你的帮助