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()
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()
引自免费微信小程序:皆我百晓生
在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函数来创建一个匿名函数,该函数在被调用时会依次执行p1
和p2
函数。这样,当你按下回车键时,两个函数都会被触发。这种方法允许你将多个事件处理程序绑定到同一个按键上,并且每个处理程序都可以独立执行。