目录
bind函数
绑定事件一般用bind函数
这个是绑定的root根窗口
root.bind('<事件名>', 回调函数名)
以下是鼠标键盘事件
<Button-1> 鼠标左键按下,2表示中键,3表示右键;
<ButtonRelease-1> 鼠标左键释放;
<B1-Motion> 按住鼠标左键移动;
<Double-Button-1> 双击左键;
<Enter> 鼠标指针进入某一组件区域;
<Leave> 鼠标指针离开某一组件区域;
<MouseWheel> 滚动滚轮;
<KeyPress-A> 按下A键,A可用其他键替代;
<Alt-KeyPress-A> 同时按下alt和A;alt可用ctrl和shift替代;
<Double-KeyPress-A> 快速按两下A;
<Lock-KeyPress-A> 大写状态下按A;
<Key> 指键盘的任意按键,
以下是代码示例:
from tkinter import *
root = Tk()
root.geometry('500x300+100+100')
root.resizable(False, False)
root.title('我要点赞')
"定义函数"
def show(event):
v.set('检测到按键')
v = StringVar()
Label(root, textvariable=v).pack()
"绑定事件"
root.bind('<Key>', show)
mainloop()
这是刚运行时的窗口:
当我们按下键盘上的任意键时:
event传参
先看错误代码:
from tkinter import *
root = Tk()
def callback(event, x='', y=''):
number = event.num
print(x + y)
print(number)
f = Frame(root, bg='light blue')
f.pack(expand=YES, fill=BOTH)
label = Label(f, text='点击', bg='light blue')
label.pack(pady=50, anchor=CENTER)
label.bind('<Button-1>', lambda: callback(event, '标签', '事件'))
f.bind('<Button>', callback)
mainloop()
这样运行后会报错:
TypeError: <lambda>() takes 0 positional arguments but 1 was given
我们只需修改一下:
label.bind('<Button-1>', lambda event: callback(event, '标签', '事件'))
在lambda后加上event即可不报错