我正在使用 Tkinter 创建一个带有 GUI 的数独求解器桌面应用程序。我遇到的问题是在输入板时。
这是我正在使用的代码:
N = 9
input = [["0" for i in range(N)] for j in range(N)]
for i in range(N):
for j in range(N):
new_col = int(j/3)
new_row = int(i/3)
if (-1)**(new_col+new_row) == 1:
colour = "lightgrey"
else:
colour = "white"
entry = Entry(root, width=10, bg=colour, textvariable=input[i][j])
entry.grid(row=i, column=j)
set_button = Button(root, text="Set", command=set, padx=20, pady=10).grid(row=10,column=3, columnspan=3)
设置按钮用于设置数值,然后显示实际的板子。
我遇到的问题是,在任何一个框中键入都会导致在其他所有框中键入相同的值。我不明白这是怎么发生的。我的数组声明可能有问题吗?
另外,我检查过,即使单击“设置”后,数组也没有改变。
考虑这行代码:
entry = Entry(root, width=10, bg=colour, textvariable=input[i][j])
因为你初始化的方式input
,上面的代码与此相同:
entry = Entry(root, width=10, bg=colour, textvariable="0")
因此,所有小部件都具有相同的值textvariable
因此它们都链接在一起并共享相同的值内存。
每个条目都需要一个独特的textvariable
,并且该选项的值需要是一个 tkinter 变量对象,例如StringVar
.
话虽这么说,你很少需要使用textvariable
。由于您没有向变量添加跟踪,因此它们基本上是不必要的。我建议您删除textvariable
并将您的条目保存在数组中。然后您可以致电get
条目获取值的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)