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

在Python TKinter中,如何确定哪个按钮被压出了按钮网格?

商开济
2023-03-14

我正在用PythonTkinter编写一个GUI,其中有一个由大约24个按钮组成的网格,我使用循环(不是单独创建的)创建了该网格。有没有什么方法可以让我得到我按下的按钮的文本。

因为它在循环中,所以即使使用lambda,回调函数也帮不了我。我不想写单独的代码,当按下每个不同的按钮时会发生什么。我只需要知道相应按钮的文本,这样我就可以启动另一个只处理该文本的通用函数。

附言:我可以做同样的任务,但是使用List和cur选择(),并且不想这样做。

self.num = 11

for r in range(0,5):

   for c in range(0,3):

       R = r; C = c

       resNum = "Ch0"+str(self.num);

       self.button1_rex = tk.Button(self.frame, text = resNum,font=("Helvetica", 14), justify = CENTER,width = 20, command = self.new_window)

       self.button1_rex.grid(row=R, column=C, sticky=W)

       self.num = self.num+1

自己new_window是打开新窗口的功能,需要根据按钮编号执行其他功能(如“Ch011”等)

共有1个答案

邴英毅
2023-03-14

最简单的方法是,在构造按钮时,使用functools.partiallambda将名称绑定到命令。

使用functools.partial

self.button1_rex = tk.Button(..., command=functools.partial(self.new_window, resNum))

使用lambda:

self.button1_rex = tk.Button(..., command=lambda r=resNum: self.new_window(r))

有关lambda的更多信息,请参阅什么是lambda(函数)?和Python tkinter创建按钮...参数。

 类似资料:
  • 我试图构建一个GUI,它有许多按钮(JButton)/下拉项(JMenuItem),当按下每个包含字母的按钮时,相关的字母将添加到标签中。 我无法识别按下了哪个按钮。你能给我一个关于如何做到这一点的提示吗?

  • 我知道以前可能有人问过这个问题,但我似乎找不到适合我情况的合理答案。 我有一个表单,表单中有多个提交按钮,我需要知道按下了哪个按钮。 表单内部的一个小代码段可能如下所示: fmt:消息部分只是考虑了客户端的语言并将单词放在按钮上。 到目前为止,我在submit按钮上添加了一个动作处理程序,并在表单上添加了一个隐藏的input元素,告诉我哪个按钮被按下了,但是我需要在不依赖javascript的情况

  • 问题内容: 我有一个包含多个链接的页面,可将用户重定向到其他页面。我以为使用表单会更好,所以我定义了一个带有Multiple的WTForms 。如何确定单击了哪个按钮并基于该按钮重定向? 问题答案: 您在表单中添加了两个按钮,因此请检查哪个字段的数据是。

  • 我想知道在多个按钮的列表中按下了哪个按钮。例如,如果按下了第二个按钮,则代码会检测到按下第二个向下的按钮,并返回类似于 。但是,我不知道该怎么做。当我搜索时,jQuery参与其中,但我没有使用jQuery。代码如下: 我尝试使用EventListner,通过将EventListner添加到创建的每个按钮,但这并不能区分单个按钮。请注意,每个按钮都有一个id为和一个类。 如果有人能帮忙,谢谢!

  • 我有一个二维数组(矩阵),尺寸为50x50。在这些矩阵中,每个位置的值为 0 或 1。此矩阵由具有 50x50 按钮的网格布局呈现,如果值为 0 或 1,则这些按钮为白色或黑色。如果我按下一个按钮,矩阵中的相关位置应该将值更改为1。为了实现这一点,我为每个矩阵位置创建了一个按钮的网格,由for循环执行。我还为此 for 循环中的每个按钮实现了一个 ActionListener。我尝试使用 Acti

  • 问题内容: 我有一个带有两个提交按钮和一些代码的表单: HTML: JavaScript: 当然,这两个提交按钮完成不同的事情。有没有一种方法可以找出按下了哪个按钮,所以以后我可以这样做吗? 理想情况下,我不想修改按钮的代码,而只是具有这种行为的纯JavaScript插件。 我知道Firefox具有,但是我找不到其他浏览器的任何内容。 问题答案: 不在提交事件处理程序中,不。 但是您 可以 做的是