📜  Python| Tkinter 中的绑定函数(1)

📅  最后修改于: 2023-12-03 15:19:17.347000             🧑  作者: Mango

Python | Tkinter 中的绑定函数

在 Tkinter 中,我们可以使用绑定函数(也称为回调函数)为小部件添加响应事件。绑定函数可以在小部件上执行一个指定的函数或方法,以响应特定的事件,例如单击、双击、鼠标移动等。绑定函数使用 bind() 方法连接到指定小部件。

语法
widget.bind(event, handler)
  • widget:绑定小部件(例如,按钮、文本框等)的名称;
  • event:绑定事件名称,使用字符串表示,例如,“”、“”、“”等等;
  • handler:一个函数或方法,当事件被触发时调用。
示例

代码:

from tkinter import *
  
def single_click(event):
    print("单击鼠标左键")
 
def double_click(event):
    print("双击鼠标左键")
 
def right_click(event):
    print("单击鼠标右键")
 
root = Tk()
root.geometry("300x200")
 
button = Button(root, text="单击这里")
button.pack()
 
button.bind("<Button-1>", single_click)
button.bind("<Double-Button-1>", double_click)
button.bind("<Button-3>", right_click)
 
root.mainloop()

结果:

结果

绑定大量组件的方法

可以使用 bind_all() 方法绑定所有的小部件和 bind_class() 方法绑定属于一定类型的所有小部件。这些方法类似于 bind() 方法,不同之处在于它们可以应用于全局、类和所有实例。以下是示例代码:

代码:

from tkinter import *
 
def handler(event):
    print("键盘事件:", event)
 
root = Tk()
root.geometry("300x200")
 
frame = Frame(root, width=100, height=100)
frame.bind("<Key>", handler) # 执行frame上的键盘事件
 
button = Button(root, text="单击这里")
button.pack()
 
# 执行全局键盘事件,无论焦点在哪个小部件上
root.bind_all("<Key>", handler)
 
# 只针对属于Button类的小部件,而不是其他的类型
root.bind_class("Button", "<1>", handler)
 
root.mainloop()
取消绑定

使用 unbind() 方法可以取消绑定函数。传递事件名称和已绑定的处理程序。以下是示例代码:

widget.unbind(event, handler)
结论

在 Tkinter 中,绑定函数是与小部件相关联的方法,当某些事件触发时被执行。可以使用绑定方式将绑定函数连接到小部件。使用 unbind() 方法可以取消绑定。除此之外,我们还可以使用 bind_all() 和 bind_class() 为所有小部件或特定类型的小部件添加绑定。