Tkinter - 多个按钮的同一事件

2023-12-11

使用 Tkinter,我有很多按钮。我希望每次按下任何按钮时都会触发相同的回调函数。我怎样才能知道按下了哪个按钮?

def call(p1):
    # Which Button was pressed?
    pass

for i in range (50):
    B1 = Button(master, text = '...', width = 2)
    B1.grid(row = i*20, column = 60)               
    B1.bind('<Button-1>',call)

    B2 = Button(master, text = '...', width = 2)
    B2.grid(row = i*20, column = 60)               
    B2.bind('<Button-1>',call)

使用列表来引用动态创建的按钮,并使用 lambda 来存储对按钮对象索引的引用。您可以确定单击了哪个按钮。在下面的例子中我使用.cget("text")在按钮对象上演示如何访问按钮小部件。

import tkinter as tk

root = tk.Tk()
root.minsize(200, 200)

btn_list = [] # List to hold the button objects

def onClick(idx):
    print(idx) # Print the index value
    print(btn_list[idx].cget("text")) #Print the text for the selected button

for i in range(10):
    # Lambda command to hold reference to the index matched with range value
    b = tk.Button(root, text = 'Button #%s' % i, command = lambda idx = i: onClick(idx))
    b.grid(row = i, column = 0)

    btn_list.append(b) # Append the button to a list

root.mainloop()

或者,您可以使用绑定,然后从生成的事件对象访问小部件。

import tkinter as tk

root = tk.Tk()
root.minsize(200, 200)

def onClick(event):
    btn = event.widget # event.widget is the widget that called the event
    print(btn.cget("text")) #Print the text for the selected button

for i in range(10):
    b = tk.Button(root, text = 'Button #%s' % i)
    b.grid(row = i, column = 0)
    # Bind to left click which generates an event object
    b.bind("<Button-1>", onClick)

root.mainloop()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tkinter - 多个按钮的同一事件 的相关文章

  • 在 DownloadProgressChanged 事件期间从 DownloadFileAsync 对事件处理程序的更新缓慢

    我的问题 我正在编写一个 PowerShell 脚本 在继续执行其他任务之前 该脚本需要从远程 Web 服务器下载几个大文件 我的项目要求之一是显示每次下载的进度 以便最终用户知道发生了什么 对另一个 SO 问题的回复包含一个使用注册事件和
  • 以跨浏览器兼容的方式触发 onresize

    我想从后面的 C 代码触发 onresize 事件 我认为这可以完成 Page clientScript RegisterScriptBlock this getType id javascript code 我尝试过 element on
  • 如何从 Tkinter 文本小部件读取文本

    from Tkinter import window Tk frame Frame window frame pack text area Text frame text area pack text1 text area get 0 0
  • Python Tkinter,停止线程函数

    我目前正在为 3D 打印机开发 GUI 并且遇到如何停止线程函数的问题 我希望能够单击 GUI 中具有另一个功能的按钮 该按钮将阻止线程函数通过串行端口发送 G 代码字符串 目前 该函数已合并线程 以允许在打印期间触发其他函数 我非常感谢有
  • 如何将交互式 matplotlib 图形插入 tkinter 画布

    我正在尝试将交互式 matplotlib 图形 具有滑块 重置按钮和单选按钮的图形 放入 tkinter Canvas 中 我已成功添加非交互式图表 但当它变为交互式时找不到问题 我尝试将所有内容更改为使用 matplotlib Figur
  • 手动触发触摸事件

    我搜索了过去30分钟 但没有找到解决方案 我想触发一个touchstart元素上的事件 这会触发touchstart event var e document createEvent MouseEvent e initMouseEvent
  • Cocoa - 捕获 NSStatusItem 鼠标悬停事件

    当用户的鼠标悬停在我的 NSStatusItem 上时 如何执行函数 如果您分配自定义NSView给你的NSStatusItem s view属性 您可以覆盖NSResponder方法mouseEntered mouseMoved and
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • 在 Delphi 中编程延迟的最佳方法是什么?

    我正在开发的 Delphi 应用程序必须延迟一秒 有时甚至两秒 我想使用最佳实践来对此延迟进行编程 在阅读 stackoverflow 上有关 Delphi Sleep 方法的条目时 我发现了以下两条评论 我遵循这样的格言 如果你觉得需要使
  • 替换已弃用的“keypress” DOM 事件

    根据MDN 文章 https developer mozilla org en US docs Web Events keypress keypress事件已被弃用 但我在其他地方找不到任何关于我们是否应该在新项目中使用此事件的信息 如果不
  • ASP.NET Click() 事件在第二次回发时不会触发

    我有一个 ASP NET Web 表单 我第一次提交表单时 会引发 提交按钮单击 事件 表单返回到浏览器时可能会出现验证错误 或者可以选择使用新值再次提交表单 当再次提交表单时 提交按钮单击 事件永远不会触发 Page Load 触发 但按
  • 将委托作为方法参数传递

    我目前正在开发一个 EventManager 类 以确保没有任何事件连接到失效的 WCF 双工客户端 并控制防止从同一客户端到一个事件的多个连接 现在基本上 我所坚持的就是尝试将事件委托传递给一个函数来控制这样的分配 var handler
  • jQuery 绑定事件触发事件

    我调用下面的第一个函数将第二个函数绑定到 onClick 事件 奇怪的是 调用第一个函数会导致触发第二个函数 第一个函数中的 LinkName 参数是表 td 元素的名称 可能不相关 function EnableExpand LinkNa
  • C#:如何在调用时触发事件的方法上创建属性?

    在 C 或 NET 中 是否有一种方法可以在方法上创建一个属性 以便在调用该方法时触发事件 理想情况下 我能够在调用该方法之前和之后运行自定义操作 我的意思是这样的 TriggersMyCustomAction public void Do
  • 如何添加 Tkinter 对 PIL Python 库的支持

    好吧 据说 PIL 应该能够自动与 Tkinter 一起工作 但我的却不能 我在 Imaging 目录 Tk 目录中找到了这个文本文件 Using PIL With Tkinter Starting with 1 0 final relea
  • Worksheet_Change 事件未触发

    我的 Excel 项目在家中可以正常运行 带有Excel 2010 但不能在两台工作计算机上 使用Excel 2016 并且我怀疑Worksheet Change事件就是问题 当用户进行更改时 黄色条 屏幕截图中 应再次变为白色 但事实并非
  • JavaScript 滚动事件不会在装有 iOS7 的 iPhone 上触发

    我对图像使用延迟加载技术 每当新图像出现在视口中时 都会设置 src 属性 以便可以加载图像 这种技术已经运行了很多年 直到 iOS7 发布 它在常规页面浏览中运行良好 但是当你关闭浏览器时 稍等一下 也许打开一些其他应用程序 然后回来它就
  • 当顶级窗口打开时隐藏根窗口,并在顶级窗口被销毁时使其重新出现

    如何在第二个窗口打开时隐藏主窗口 然后在第二个窗口关闭时使主窗口重新出现 我了解withdraw 和deiconify 的用法 但不知道如何在这种情况下应用它们 这样做的原因是最终创建一个程序 其中主窗口充当菜单 当从其中打开其他窗口时隐藏
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • Jquery 点击事件在设备(ipad、iphone ..)中的 li 上不起作用

    Jquery 单击事件在设备中的 li 上不起作用 我尝试使用 click 和 touchstart 事件 但是使用 touchstart 时的问题是我无法向下滚动 div 当我尝试通过单击 li 向下滚动时 它会被选中 有没有办法使用任何

随机推荐