输入一个条目会导致所有条目被写入 (Tkinter)

2024-03-04

我正在使用 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(使用前将#替换为@)

输入一个条目会导致所有条目被写入 (Tkinter) 的相关文章

随机推荐