9.6.2 按钮左键响应
这一节,将把按钮上的数字隐藏,点击之后才显示。
首先给按钮绑定单击事件处理函数:
import tkinter as tkdef 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),所以可以这么做,如果是其他方式布局,就不能通过布局获取按钮所在行列了。
点击按钮后可看到打印的当前按钮所在的坐标: