当前位置: 首页 > 知识库问答 >
问题:

Python tkinter查找单击的按钮

余天宇
2023-03-14

我正在尝试实现一个名为“五连胜”的游戏。我创建了一个15×15的列表来放置按钮。(我使用range(16),因为我还需要一行和一列来显示行号和列号)

我希望我的实现会像点击一个按钮时,它会变成一个标签。但是我不知道用户点击了哪个按钮。

我如何才能实现这一点?谢谢

from tkinter import *
root=Tk()
root.wm_title("Five In a Row")
buttonlst=[ list(range(16)) for i in range(16)]

chess=Label(root,width=2,height=2,text='0')

def p(button):
    gi=button.grid_info()
    x=gi['row']
    y=gi['column']
    button.grid_forget()
    chess.grid(row=x,column=y)
    buttonlst[x][y]=chess

for i in range(16):
    for j in range(16):
        if i==0:
            obj=Label(root,width=2,text=hex(j)[-1].upper())
        elif j==0:
            obj=Label(root,width=2,text=hex(i)[-1].upper())
        else:
            obj=Button(root,relief=FLAT,width=2,command=p(obj))
        obj.grid(row=i,column=j)
        buttonlst[i][j]=obj

root.mainloop()

在Python TKinter?中,有一个类似的问题,即如何确定哪个按钮被按出了按钮网格?。但我不太明白。

共有2个答案

澹台俊晖
2023-03-14

当您使用command=p(obj)时,实际上是在调用函数p。如果要传递带有参数的函数,应创建lambda函数。因此,命令分配应类似于:

command = lambda: p(obj)

这将正确地将对象传递到p函数中。

向弘懿
2023-03-14

要将按钮实例传递给命令,必须分两步进行。首先,创建按钮,然后在第二步中配置命令。此外,必须使用lambda创建所谓的闭包。

例如:

obj=Button(root,relief=FLAT,width=2)
obj.configure(command=lambda button=obj: p(button))
 类似资料:
  • 问题内容: 我正在寻找网站。在检查元素中看到以下内容: 需要获取并按标题单击元素。像这样: 但是通过标题。 问题答案: 就像巴拉克·马诺斯(Barak Manos)所说,答案是: 以[0]结尾的情况是列表。

  • 错误:NoSuChelementException:没有这样的元素:无法定位元素:{“method”:“xpath”,“selector”:“//td[@class='c($PrimaryColor)W(51%)']”}(会话信息:chrome=77.0.3865.120) 我的代码如下: 这是我试图从“https://finance.yahoo.com/quote/goog?p=goog”中搜索

  • 点击一个元素后,如何使用selenium找到当前url?我有这个网站:http://www.runningintheusa.com/Classic/View.aspx?RaceID=5622 我有代码(假设所有相关的库都已导入) 我运行代码,它只返回原来的网址是http://www.runningintheusa.com/Classic/View.aspx?RaceID=5622 我怎么能找到的网

  • 我正试图抓取一个页面,获取一盘国际象棋的移动列表,该列表位于右侧菜单的“移动”选项卡下。 在浏览器中手动单击“移动”选项卡时,我可以通过 哪个(正确地)返回 当尝试通过单击按钮时,使用 似乎什么都没有发生,我不知道如何进行故障排除。 如何通过模拟单击(活动事件侦听器)切换到“移动”选项卡? 额外提示:是否可以使用rvest软件包?

  • 问题内容: 我正在尝试在www.meetme.com上发送消息,但不知道该怎么做。我可以在评论区域中键入消息,但是单击“发送”按钮不会执行任何操作。我究竟做错了什么?当我登录并按登录按钮时,页面确实发生了变化,一切都很好。有人有任何想法或线索吗? 问题答案: 如果不了解正在访问的网页,就无法在禁用JavaScript的情况下执行AJAX请求。如果更改未成功,则必须继续进行调试,但请确保已启用Jav

  • 问题内容: 我正在使用Scrapy爬行网页。单击某些按钮时,仅会弹出一些我需要的信息(当然,单击后也会显示在HTML代码中)。 我发现Scrapy可以处理的形式(如登录)如图所示这里。但是问题在于没有表格可以填写,所以这不是我所需要的。 如何简单地单击一个按钮,然后显示我需要的信息? 我是否必须使用诸如机械化或lxml之类的外部库? 问题答案: Scrapy无法解释javascript。 如果你绝