9.6.2 按钮左键响应

这一节,将把按钮上的数字隐藏,点击之后才显示。
首先给按钮绑定单击事件处理函数:
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]]
#左键点击事件
def left_click(event):
  button = event.widget
  print("{}, {}".format(button.grid_info()["row"], button.grid_info()["column"]))
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) #表格式布局,规定行和列
        btn.bind("<Button-1>",left_click) #绑定单击事件
# 进入事件循环
root.mainloop()
点击按钮我们必须要知道点击了哪行哪列的按钮,才可以和地雷的矩阵mines做一个对应,例如点击了下标为3、4的按钮,那么就要访问mines[3][4],看这个值是不是9,如果是(9代表雷),游戏就输掉了
通过查看布局信息可以得到按钮所在的行列。布局是表格布局(grid),所以可以这么做,如果是其他方式布局,就不能通过布局获取按钮所在行列了。
点击按钮后可看到打印的当前按钮所在的坐标: