首页 > 解决方案 > Python / TkInter - 从for循环制作的按钮网格中查找哪个按钮被按下的方法

问题描述

我正在尝试使用 Tkinter 和 Python 进行一个非常简单的 Othello 迭代并有一个想法,但是我不知道一种方法来检索按下哪个按钮(通过整数?)。我使用了一个按钮网格

for x in range(8):
    for y in range(8):
        btn = Button(frame)
        buttons.append(btn)
        btn.grid(column=x, row=y, sticky=N+S+E+W)
        btn.config(bg='green2')

我计划在按下时配置按钮,并通过添加和减去按钮的值来检查所有 8 个方向,以找到左侧(-8)、右上角(+7)等按钮。我很新编码并希望得到任何反馈,谢谢。

标签: pythonbuttontkintergridothello

解决方案


欢迎来到 SO!

您可以在 tkinter 中的任何小部件上创建绑定,语法为:

widget.bind(sequence, func, add)

因此,对于您的示例,您可以为每个按钮创建一个绑定,并传递 x 和 y 值作为参数来跟踪目标函数中的哪个按钮。像这样的东西:

btn.bind("<Button-1>", lambda x=x, y=y: print(x, y))

这将打印网格中每个按钮的坐标,然后您可以将打印语句替换为您想要的任何功能。

可以在此处找到所有绑定的列表


推荐阅读