2201_75335496 2024-06-21 16:25 采纳率: 83.8%
浏览 9
已结题

python tkinter 如何将多个事件绑定到一个按键上?

python tkinter 如何将多个事件绑定到一个按键上?

import tkinter as tk
win = tk.Tk()
def p1(event = None):
     print("这是第一个函数")
def p2(event = None):
     print("这是第二个函数")
win.bind("<Return>",p1)
win.bind("<Return>",p2) # 这样只会绑定p2

win.mainloop()
  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-21 16:25
    关注

    引自免费微信小程序:皆我百晓生

    在Tkinter中,你可以使用一种方法将多个事件绑定到同一个按键上,但是需要注意的是,使用bind方法绑定同一个事件处理程序(例如按键事件)到同一个按键时,后面的绑定会覆盖前面的绑定。也就是说,在你的例子中,当你按下回车键(<Return>)时,只有p2函数会被触发,因为p2的绑定覆盖了p1的绑定。

    为了解决这个问题,你可以使用一种不同的方法:使用lambda函数来创建匿名函数,这样你可以为每个绑定创建一个独立的处理程序,并且可以在处理程序内部调用多个函数。这是一个示例代码:

    import tkinter as tk
    
    win = tk.Tk()
    
    def p1(event=None):
        print("这是第一个函数")
    
    def p2(event=None):
        print("这是第二个函数")
    
    # 使用lambda函数绑定两个事件处理程序到同一个按键
    win.bind("<Return>", lambda event: [p1(event), p2(event)])
    
    win.mainloop()
    

    在这个例子中,我们使用了lambda函数来创建一个匿名函数,该函数在被调用时会依次执行p1p2函数。这样,当你按下回车键时,两个函数都会被触发。这种方法允许你将多个事件处理程序绑定到同一个按键上,并且每个处理程序都可以独立执行。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月6日
  • 已采纳回答 6月28日
  • 创建了问题 6月21日

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?