首页 > 解决方案 > 使用 tkinter 创建多个按钮

问题描述

我正在尝试在 for 循环中使用 tkinter 创建几个按钮,但是我在传递给它们的命令时遇到了一些问题,而且由于我需要创建的按钮数量不固定,所以我不能手动创建它们(扫雷游戏)。

按钮已正确创建并以网格形式显示,但所有命令都相同(最后一个按钮创建的命令)。

我的代码看起来像:

rows = 5
columns = 5
buttons_dict = {}

for i, row in enumerate(range(rows)):
    for j, column in enumerate(range(columns)):

        buttons_dict[(i, j)] = tk.Button(top_board_frame, command=lambda: btn_click(i, j))
        buttons_dict[(i, j)].grid(row=i, column=j)

我的意图是向每个按钮传递一个函数,该函数在单击时返回按钮的坐标。就像是:

def btn_click(i, j):    
    current_pair = (i, j)
    print(current_pair)

上面代码的问题是它返回最后创建的按钮的坐标,无论单击哪个按钮。

标签: pythontkinterminesweeper

解决方案


你可以做这样的事情。在命令中传递对按钮的引用。

btn = buttons_dict[(i, j)] = tk.Button(top_board_frame)
btn.configure(command=lambda: btn_click(btn, i, j))

推荐阅读