鼠标和键盘事件
代码 | 说明 |
---|---|
<Button-1>或<ButtonPress-1>或<1> | 鼠标左键按下。2 是鼠标中键,3是鼠标右键 |
<ButtonRelease-1> | 鼠标左键释放 |
<B1-Motion> | 按住鼠标左键移动 |
<Double-Button-1> | 双击左键 |
<Enter> | 鼠标指针进入某一组件区域 |
<Leave> | 鼠标指针离开某一组件区域 |
<MouseWheel> | 滚动滚轮 |
<KeyPress-a> | 按下a键,a可用其他键替代 |
<KeyRelease-a> | 释放a键 |
<KeyPress-A> | 按下A键(大写的A键) |
<Alt-KeyPress-a> | 同时按下Alt和a键,Alt可以替换成Ctrl和Shift |
<Double-KeyPress-a> | 快速按两下a |
<Control-V> | Control和V同时被按下,V可以换成其他按键 |
键盘事件绑定窗口(一般为root=tk.Tk()
)
event 对象常用属性
名称 | 说明 |
---|---|
char | 按键字符,仅对键盘事件有效 |
keycode | 按键编码,仅对键盘事件有效 |
keysym | 按键名称,仅对键盘事件有效 比如按下空格键: 键的char,键的keycode:32,键的keysym:space 比如按下a键: 键的char:a,键的keycode:65,键的keysym:a |
num | 鼠标按键,仅对鼠标事件有效 |
type | 所触发的事件类型 |
widget | 引起事件的组件 |
width, height | 组件改变后的大小,仅Configure有效 |
x,y | 鼠标当前位置,相对于父容器 |
x_root,y_root | 鼠标当前位置,相对于整个屏幕 |
lambda表达式
lambda格式 | 说明 |
---|---|
lambda x, y:x*y | 函数输入是x和y,输出是积x*y |
lambda:None | 函数没有输入参数,输出是None |
lambda:aaa(3, 4) | 函数没有输入参数,输出是aaa(3, 4)的结果 |
lambda *args:sum(args) | 输入是任意个数的参数,输出是它们的和 |
lambda **kwargs:1 | 输入是任意键值对参数,输出是1 |
多种事件绑定方式汇总
组件对象的绑定
组件对象的绑定(适合简单,且不需要获取event对象)
Button(root, text="login",command=login)
通过bind()
方法绑定(适合需要获取event对象)
c1 = Canvas(); c1.bind("<Button-1>", drawLine)
组件类的绑定
调用对象的bind_class
函数,将该组件类所有的组件绑定事件
python w.bind_class("Widget", "event", eventhandler)
函数名 | 说明 |
---|---|
askopenfilename(**options) | 返回打开的文件名 |
askopenfilenames(**options) | 返回打开的多个文件名列表 |
askopenfile(**options) | 返回打在文件对象 |
askopenfiles(**options) | 返回打开的文件对象的列表 |
askdirectory(**options) | 返回目录名 |
asksaveasfile(**options) | 返回保存的文件对象 |
asksaveasfilename(**options) | 返回保存的文件名 |
命名参数options的常见值如下:
参数名 | 说明 |
---|---|
defaultextension | 默认后缀:.xxx 用户没有输入则自动添加 |
filetypes = [(label1, pattern1), (label2,pattern2)] | 文件显示过滤器 |
initaldir | 初始目录 |
initialfile | 初始文件 |
parent | 父窗口,默认根窗口 |
title | 窗口标题 |