Tkinter 鼠标键盘事件(一)
一: 鼠标事件
<Button-1> 鼠标左键单击
<Button-2> 鼠标中键单击
<Button-3> 鼠标右键单击
<1> = <Button-1> =<ButtonPress-1>
<2> = <Button-2> = <ButtonPress-2>
<3> = <Button-3> =<ButtonPress-3>
<B1-Motion> 鼠标左键拖动
<B2-Motion> 鼠标中键拖动
<B3-Motion> 鼠标右键拖动
<ButtonRelease-1> 鼠标左键释放
<ButtonRelease-2> 鼠标中键释放
<ButtonRelease-3> 鼠标右键释放
<Double-Button-1> 鼠标左键双击
<Double-Button-2> 鼠标中键双击
<Double-Button-3> 鼠标右键双击
<Enter> 鼠标指针进入控件
<Leave> 鼠标指针离开控件
二:键盘事件
<Return> 回车
<Cancel> Break键
<BackSpace> BackSpace键
<Tab> Tab键
<Shift_L> Shift键
<Alt_L> Alt键
<Control_L> Control键
<Pause> Pause键
<Caps_Lock> Caps_Lock键
<Escape> Escapel键
<Prior> PageUp键
<Next> PageDown键
<End> End键
<Home> Home键
<Left> 左箭头
<Up> 上箭头
<Right> 右箭头
<Down> 下箭头
<Print> Print Screen键
<Insert> Insert键
<Delete> Delete键
<F1> F1键
. .
. .
<F12> F12键
<Num_Lock> Num_Lock键
<Scroll_Lock> Scroll_Lock键
<key> 任意键
三: 可打印的字符:
a 字母a
b 字母b
1 数字1
<KeyPress-a>
<KeyRelease-a>
A shift+a
B shift+b
四: 组合键:
<Shift-Up> Shift+Up
<Alt-Up> Alt+Up
<Control-Up> Ctrl+Up
<Control-A> Ctrl+shift+a
五:窗体事件:
<Configure> 改变大小或位置
<Visibility> 当组件变为可视状态时触发
<Unmap> 当组件由显示状态变为隐藏状态时触发
<Map> 当组件由隐藏状态变为显示状态时触发
<Expose> 当组件从原本被其他组件遮盖的状态中暴漏出来时触发
<FocusIn> 组件获得焦点时触发
<FocusOut> 组件失去焦点时触发
<Circulate> 当窗体由于系统协议要求在堆栈中置顶或压底时触发
<Colormap> 当窗体的颜色或外貌改变时触发,Tk中忽略此细则
<Property> 当窗体的属性被删除或改变时触发,属于TK的核心
<Destroy> 当组件被销毁时触发
<Activate> 与组件选项中的state项有关,表示组件由不可用变为可用时触发
<Deactiavte> 与组件选项中的state项有关,表示组件由可用变为不可用时候触发
六: Event
widget 事件被触发的控件
x, y 鼠标距离窗体左上角的位置(坐标)
x_root, x_y 鼠标距离屏幕左上角的位置(坐标)
char 键盘事件对应的字符代码
keysym 键盘事件对应的字符串
keycode 键盘事件对应的按键码
num 鼠标事件对应的按键码
width, height 控件的新大小
type 事件类型
列子
# encoding: utf-8 from Tkinter import * class MouseKeyEventDemo:
def __init__(self):
# 窗口和标题
window = Tk()
window.title("鼠标键盘事件") # 打包一个白色画布到窗口
canvas = Canvas(window, width=200, height=200, bg="white")
canvas.focus_set() # 让画布获得焦点,对于键盘
canvas.pack() # 绑定鼠标左键事件,交由processMouseEvent函数去处理,事件对象会作为参数传递给该函数
canvas.bind(sequence="<Button-1>", func=self.processMouseEvent) # 绑定鼠标键盘事件,交由processKeyboardEvent函数去处理,事件对象会作为参数传递给该函数
canvas.bind(sequence="<Key>", func=self.processKeyboardEvent) # 消息循环
window.mainloop() # 处理鼠标事件,me为控件传递过来的鼠标事件对象
def processMouseEvent(self, me):
print("me=", type(me)) # me= <class> print("位于屏幕", me.x_root, me.y_root)
print("位于窗口", me.x, me.y)
print("位于窗口", me.num) # 处理鼠标事件,ke为控件传递过来的键盘事件对象
def processKeyboardEvent(self, ke):
print("ke.keysym", ke.keysym) # 按键别名
print("ke.char", ke.char) # 按键对应的字符
print("ke.keycode", ke.keycode) # 按键的唯一代码,用于判断按下的是哪个键</class></key></button-1> MouseKeyEventDemo()

以上代码已在python2.7上运行成功
Tkinter 鼠标键盘事件(一)的更多相关文章
- Tkinter 鼠标键盘事件(二)
一个Tkinter主要跑在mainloop进程里.Events可能来自多个地方,比如按键,鼠标,或是系统事件. Tkinter提供了丰富的方法来处理这些事件.对于每一个控件Widget,你都可以为其绑 ...
- Linux 模拟 鼠标 键盘 事件
/************************************************************************ * Linux 模拟 鼠标 键盘 事件 * 说明: ...
- Python——pyHook监听鼠标键盘事件
pyHook包为Windows中的全局鼠标和键盘事件提供回调. 底层C库报告的信息包括事件的时间,事件发生的窗口名称,事件的值,任何键盘修饰符等. 而正常工作需要pythoncom等操作系统的API的 ...
- Python - selenium_WebDriver 鼠标键盘事件
from selenium import webdriver #引入ActionChains类 提供了鼠标的操作方法 from selenium.webdriver.common.action_cha ...
- Selenium4.0+Python3系列(四) - 常见元素操作(含鼠标键盘事件)
一.写在前面 上篇文章介绍的是关于浏览器的常见操作,接下来,我们将继续分享关于元素的常见操作,建议收藏.转发! 二.元素的状态 在操作元素之前,我们需要了解元素的常见状态. 1.常见元素状态判断,傻傻 ...
- 由chrome剪贴板问题研究到了js模拟鼠标键盘事件
写在前面 最近公司在搞浏览器兼容的事情,所有浏览器兼容的问题不得不一个人包了.下面来说一下今天遇到的一个问题吧 大家都知道IE下面如果要获得剪贴板里面的信息的话,代码应该如下所示 window.cli ...
- c# 使用hook来监控鼠标键盘事件的示例代码
如果这个程序在10几年前,QQ刚刚兴起的时候,有了这个代码,就可实现盗号了. 当然使用钩子我们更多的是实现"全局快捷键"的需求. 比如 程序最小化隐藏后要"某快捷键&qu ...
- openGL 初试 绘制三角形 和添加鼠标键盘事件
code: #include <gl/glut.h> #include <stdlib.h> void render(void); void keyboard(unsigned ...
- 自动化测试基础篇--Selenium鼠标键盘事件
摘自https://www.cnblogs.com/sanzangTst/p/7477382.html 前面几篇文章我们学习了怎么定位元素,同时通过实例也展示了怎么切换到iframe,怎么输入用户名和 ...
随机推荐
- 快读&快写模板【附O2优化】
快读&快写模板 快读快写,顾名思义,就是提升输入和输出的速度.在这里简单介绍一下几种输入输出的优劣. C++ cin/cout 输入输出:优点是读入的时候不用管数据类型,也就是说不用背scan ...
- Apache 监听 ipv4
查看端口信息 ifconfig 发现只有 ipv6 的 80 端口被监听,ipv4 的 80 端口没有被监听 因此通过 ipv4 无法访问 tcp6 0 0 :::80 :::* LISTEN 221 ...
- 很多人都会做错的一道JVM题?【分享】
有关Java虚拟机类加载机制相关的文章一搜一大把,笔者这儿也不必再赘述一遍了.笔者这儿捞出一道code题要各位大佬来把玩把玩,假定你一眼就看出了端倪,那么祝贺你,你可以下山了: public cla ...
- FFT_应用和例题
卷积 现有两个定义在 N 上的函数 \(f(n),g(n)\),定义 \(f\) 和 \(g\) 的卷积(convolution)为 \(f \otimes g\) \[ (f \otimes g)( ...
- Spring源码系列 — 注解原理
前言 前文中主要介绍了Spring中处理BeanDefinition的扩展点,其中着重介绍BeanDefinitionParser方式的扩展.本篇文章承接该内容,详解Spring中如何利用BeanDe ...
- 基于Spark的电影推荐系统(推荐系统~4)
第四部分-推荐系统-模型训练 本模块基于第3节 数据加工得到的训练集和测试集数据 做模型训练,最后得到一系列的模型,进而做 预测. 训练多个模型,取其中最好,即取RMSE(均方根误差)值最小的模型 说 ...
- OpenGL入门1.1:窗口
每一个小步骤的源码都放在了Github 的内容为插入注释,可以先跳过 测试GLFW 在我们的test.cpp中加入下面两个头文件 #include <glad/glad.h> #inclu ...
- 2019-11-23-WPF-使用-RawInput-接收裸数据
原文:2019-11-23-WPF-使用-RawInput-接收裸数据 title author date CreateTime categories WPF 使用 RawInput 接收裸数据 li ...
- netCore3.0+webapi到前端vue(前端)
前篇已经完成后端配置并获取到api连接 https://www.cnblogs.com/ouyangkai/p/11504279.html 前端项目用的是VS code编译器完成 vue 第一步 引入 ...
- 重温CLR(十七)程序集加载和反射
本章主要讨论在编译时对一个类型一无所知的情况下,如何在运行时发现类型的信息.创建类型的实例以及访问类型的成员.可利用本章讲述的内容创建动态可扩展应用程序. 反射使用的典型场景一般是由一家公司创建宿主应 ...