9.6.1 生成按钮矩阵

首先,是生成10*10的按钮矩阵:
import tkinter as tk
root = tk.Tk()
# 创建一个10x10的按钮矩阵
for i in range(10):
    for j in range(10):
        btn = tk.Button(root, text="Btn {},{}".format(i, j),width=8,height=2)
        btn.grid(row=i, column=j) #表格式布局,规定行和列
# 进入事件循环
root.mainloop()
第9行代码是布局,grid是一种表格布局,row和column分别是这个按钮所处表格的行和列。
效果如图:
接下来,把Java学习平台【环森编程】 (codessp.cn)里最后的生成扫雷的部分,写成函数,generateMines,暂时不需要参数,返回一个10*10的二维列表,雷的数量是10个,类似这样:
0 0 0 1 9 1 0 0 0 0
0 0 0 1 1 1 1 1 1 0
0 0 0 0 1 1 2 9 1 0
0 0 0 0 1 9 2 1 1 0
0 0 0 0 1 1 1 0 0 0
1 1 0 0 0 0 0 1 2 2
9 1 0 0 0 0 0 1 9 9
0 1 1 1 0 0 0 0 0 0
1 2 9 2 1 0 0 0 0 0
1 9 3 9 1 0 0 0 0 0
然后用生成的矩阵更新按钮上面的文字,这一步相当于是扫雷的明牌,为后面写逻辑做准备。
import tkinter as tk
def generateMines():
  #代码省略,整一个模拟数据
  return [[0, 0, 0, 0, 0, 1, 1, 1, 0, 0], 
[0, 1, 1, 1, 0, 1, 9, 1, 0, 0],
[1, 2, 9, 1, 1, 2, 2, 1, 0, 0], 
[9, 2, 1, 1, 1, 9, 2, 1, 0, 0], 
[1, 1, 0, 0, 1, 2, 9, 2, 1, 0], 
[1, 1, 1, 1, 1, 1, 2, 9, 1, 0], 
[9, 1, 1, 9, 1, 0, 2, 2, 2, 0], 
[2, 2, 1, 1, 1, 0, 1, 9, 1, 0], 
[9, 1, 0, 0, 0, 0, 1, 1, 1, 0], 
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0]]
root = tk.Tk()
mines=generateMines() #生成地雷矩阵
# 创建一个10x10的按钮矩阵
for i in range(10):
    for j in range(10):
        btn = tk.Button(root, text="{}".format(mines[i][j]),width=4,height=1)
        btn.grid(row=i, column=j) #表格式布局,规定行和列
# 进入事件循环
root.mainloop()
最后效果图: