如何解决通过循环声明和使用多个Tk条目 -config-和-trace-方法的问题
我正在用Tk编写数独求解器。它可以正常工作,但我想做一些改进,例如验证每个单元格中写入的数字数量(仅一个),并在数独解决并填充后更改为用户填充的某些单元格的颜色。
为了声明96个不同的Entry,我创建了9个循环(每个块/帧一个,每个块/帧9个单元),如下所示:
cell = [[0 for x in range(9)] for x in range(9)]
cell_content = [['0' for x in range(9)] for x in range(9)]
# block 0
frame0 = Frame(root,width=500,height=500,relief="ridge",bd=8)
frame0.grid(row=1,column=1,padx=2,pady=2)
block0 = []
for i in range(0,3):
for j in range(0,3):
cell_content[i][j] = StringVar()
cell[i][j] = Entry(frame0,bg="white",fg="black",justify="left",width=1,font = "Helvetica 24 bold",textvariable=cell_content[i][j])
cell[i][j].grid(row=i,column=j,padx=1,pady=1)
block0.append(celda[i][j])
cell_content[i][j].trace("w",lambda *args: limit_cell(cell_content))
def limit_cell(cell):
if len(cell[i][j].get()) > 0:
cell[i][j].set(celda[i][j].get()[-1]) # take the last one typed
但是我有两个问题:
1.-我无法使用以下方法更改单元格的颜色(数独解决并填充后):
cell[i][j].config(fg="green")
>>>TypeError: can only concatenate str (not "int") to str
2.-方法 trace 不适用于每次迭代,仅适用于最后一次迭代,在这种情况下,对于 cell_cont [2] [2] (如果我写了9个循环,则为cell_cont [8] [8])
有什么建议吗?我几乎证明了一切。
非常感谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。