通过循环声明和使用多个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 (将#修改为@)