与按钮对应的数组

Corresponding arrays with buttons

我正在制作一个数独网格,我已经成功地生成了一个 9x9 的按钮网格。 我还创建了一个包含 81 个值的数组。 无论如何我可以获取按钮内的值以匹配它们在数组中的相关索引。我只想显示一些数字,也许每行大约 3 个?有什么想法吗!?

这是按钮生成器:

#Create a 9x9 (rows x columns) grid of buttons inside the frame
for row_index in range(9):
    for col_index in range(9):
        if (row_index in {0, 1, 2, 6, 7, 8} and col_index in {3, 4, 5}) or \
                (row_index in {3, 4, 5} and col_index in {0, 1, 2, 6, 7, 8}): #Colours a group of 3x3 buttons together to differentiate the board better.
            colour = 'gray85'
        else:
            colour = 'snow'
        c=True
        btn = Button(frame, width = 12, height = 6, bg=colour) #create a button inside frame 
        btn.grid(row=row_index, column=col_index, sticky=N+S+E+W)
        btn.bind("<Button-1>", LeftClick)
        buttons.append(btn)

这是值数组:

    easy = [
 [8,5,1,9,4,3,6,7,2],
 [4,3,9,6,7,2,5,1,8],
 [6,7,2,1,8,5,9,3,4],
 [1,2,3,7,9,4,8,6,5],
 [7,6,5,2,1,8,4,9,3],
 [9,4,8,3,5,6,7,2,1],
 [5,9,6,4,2,1,3,8,7],
 [2,8,7,5,3,9,1,4,6],
 [3,1,4,8,6,7,2,5,9],
]

我尝试过枚举的想法,但是没有取得任何成功。

def Enumerate():
    for row_index in enumerate(easy):
        for col_index in enumerate(row_index):
            for btn in buttons:
                btn.config(text=col_index)

当我运行枚举函数时,显示如下。 https://gyazo.com/1aeba588e321b5228e2d50d68ab24583

对于每个按钮的文本,它输出数组中的最终列表。我觉得它与枚举周围的循环有关,但是我不确定当时我可以执行此任务的任何其他方式。

在创建时将文本分配给按钮是否有意义?例如,

button_text = str(easy[row_index][col_index])
btn = Button(frame, width = 12, height = 6, bg=colour, text=button_text)

您的 Enumerate() 函数有问题:

  1. 在每次迭代时枚举 returns 一个元组。该元组由 iterable(list) 中的索引和该索引处的列表项组成。这意味着您的第二个 for 语句不是遍历列表中的每一行数据,而是遍历 (index, list) 的元组。
  2. 您通过 col_index 循环遍历并处理每个迭代的整个按钮列表。

试试这个函数:

def populate():
    for row_index, row_data in enumerate(easy):
        for col_index, cell_value in enumerate(row_data):
            buttons[(row_index * 9) + col_index].config(text=cell_value)