【发布时间】:2019-08-06 14:27:40
【问题描述】:
我正在尝试制作一个 tkinter GUI,其中包含用户指定的一定数量的按钮和输入字段,因此在下面的代码中,例如,如果用户将变量编号指定为 3,我希望有3 个输入框和 , 我想设置它,以便如果我在第一个字段中输入一个值并单击它旁边的按钮,我希望该按钮从它旁边的输入字段中读取值。我还需要将每个输入字段分配给将通过相同的迭代循环创建的变量。但是,我在将按钮映射到输入字段方面遇到了困难,因为我似乎总是遇到文本“AttributeError:'NoneType'对象没有属性'get'”的错误。任何人都可以修复我的代码或帮助我找到问题的替代解决方案吗?抱歉,如果描述有点混乱。 这与仅获取条目小部件内容的问题不同,因为我需要它来使用迭代创建一定数量的条目小部件和按钮,而我的问题已被标记为重复的问题并没有解释如何迭代地将每个输入字段映射到每个按钮。例如,如果我输入 3 作为变量,我需要程序创建输入字段 1、输入字段 2 和输入字段 3 以及按钮 1、按钮 2 和按钮 3,然后使用迭代将每个按钮映射到其各自的输入字段。 我尝试过使用字典,但这似乎没有多大帮助。
import tkinter as tk
root = tk.Tk()
number = 3
d={}
def callBack():
print(d["E{0}".format(i)].get())
return
for i in range(0,number):
d["E{0}".format(i)] = tk.Entry(root)
d["E{0}".format(i)].grid(row=i, column=0)
d["B{0}".format(i)] = tk.Button(root, text="test", command=callBack)
d["B{0}".format(i)].grid(row=i, column=1)
【问题讨论】:
-
您需要提供回调作为
command参数。在回调中,调用相关的get方法。 -
AttributeError: 'NoneType' object has no attribute 'get'- 如果您定义小部件并同时调用几何管理器方法,您将收到此信息。阅读Tkinter: AttributeError: NoneType object has no attribute <attribute name> -
@DavidCullen 我照你说的做了,虽然我仍然有同样的错误!
-
@HenryYik 我试过了,它有所帮助,但我仍然有一个错误,无论我点击什么按钮,只打印第三个输入框中的数据。我该如何解决这个问题,所以按钮 1 打印输入框 1,按钮 2 打印输入框 2,按钮 3 打印输入框 3?
标签: python user-interface tkinter iteration tkinter-entry