用tkinter创建多个按钮[重复]。

问题描述 投票:0回答:1

我试图在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)

上面的代码的问题是,无论哪个按钮被点击,它都会返回最后一个按钮的坐标。

python tkinter minesweeper
1个回答
0
投票

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

btn = buttons_dict[(i, j)] = tk.Button(top_board_frame)
btn.configure(command=lambda: btn_click(btn, i, j))
© www.soinside.com 2019 - 2024. All rights reserved.