python - 无法接收给定数量的条目数据:TypeError:列表索引必须是整数或切片,而不是条目
问题描述
我编写了一些代码,它会根据用户输入的数字自动创建输入框。
当尝试.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
我知道 given_count 值是正确的,因为它被进一步用于将有问题的输入框添加到我的网格系统中。
错误似乎在于 i 值。无论我如何尝试将其设置为索引值,我都会得到相同的错误。
任何帮助将不胜感激!
解决方案
要跟踪您的条目,您需要保留参考。如果你只是存储一个数字或一个字符,它没有任何参考。这里是 x 参考。
让我们考虑一下这段代码:
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()
希望这可以帮助
推荐阅读
- python - 在哪里可以找到 googleapiclient 库中所有查询参数的文档?
- azure-devops - 在扩展模板中设置名称在 azure yaml 管道中不起作用
- timer - ATSAML21 硬件定时器
- ssl - Rancher - 对 ingress.local 有效
- java - 如何在 Java 中捕获 AuthenticationFailedException 错误?
- excel - 接下来没有错误用户表单 Excel VBA 错误与 Else-If 语句
- java - 如何使用 Spring Security + Angular 登录/验证
- javascript - 更新 Firestore 数据时间戳为空
- java - 如何使用 Powermockito 模拟构建器?
- php - 根据值在 Symfony 中设置多个实体