Python tkinter之Bind(绑定事件)的使用示例


Posted in Python onFebruary 05, 2021

1、绑定鼠标事件并获取事件属性

# -*- encoding=utf-8 -*-

import tkinter
from tkinter import *


def left_mouse_down(event):
  print('鼠标左键按下')

  # 事件的属性
  widget = event.widget
  print('触发事件的组件:{}'.format(widget))
  print('组件颜色:{}'.format(widget.cget('bg')))
  widget_x = event.x # 相对于组件的横坐标x
  print('相对于组件的横坐标:{}'.format(widget_x))
  widget_y = event.y # 相对于组件的纵坐标y
  print('相对于组件的纵坐标:{}'.format(widget_y))
  x_root = event.x_root # 相对于屏幕的左上角的横坐标
  print('相对于屏幕的左上角的横坐标:{}'.format(x_root))
  y_root = event.y_root # 相对于屏幕的左上角的纵坐标
  print('相对于屏幕的左上角的纵坐标:{}'.format(y_root))


def left_mouse_up(event):
  print('鼠标左键释放')
def moving_mouse(event):
  print('鼠标左键按下并移动')
def moving_into(event):
  print('鼠标进入')
def moving_out(event):
  print('鼠标移出')
def right_mouse_down(event):
  print('鼠标右键按下')
def right_mouse_up(event):
  print('鼠标右键释放')
def pulley_up(event):
  print('滑轮向上滚动')
def focus(event):
  print('聚焦事件')
def unfocus(event):
  print('失焦事件')


if __name__ == '__main__':
  win = tkinter.Tk() # 窗口
  win.title('南风丶轻语') # 标题
  screenwidth = win.winfo_screenwidth() # 屏幕宽度
  screenheight = win.winfo_screenheight() # 屏幕高度
  width = 500
  height = 300
  x = int((screenwidth - width) / 2)
  y = int((screenheight - height) / 2)
  win.geometry('{}x{}+{}+{}'.format(width, height, x, y)) # 大小以及位置

  label = Label(text='标签', relief='g', font=('黑体', 20))
  label.pack(pady=10)

  label.bind('<Button-1>', left_mouse_down) # 鼠标左键按下
  label.bind('<ButtonRelease-1>', left_mouse_up) # 鼠标左键释放
  label.bind('<Button-3>', right_mouse_down) # 鼠标右键按下
  label.bind('<ButtonRelease-3>', right_mouse_up) # 鼠标右键释放
  label.bind('<B1-Motion>', moving_mouse) # 鼠标左键按下并移动
  label.bind('<Enter>', moving_into) # 鼠标移入事件
  label.bind('<Leave>', moving_out) # 鼠标移出事件
  label.bind('<FocusIn>', focus) # 聚焦事件
  label.bind('<FocusOut>', unfocus) # 失焦事件
  label.focus_set() # 直接聚焦
  Entry().pack()

  win.mainloop()

Python tkinter之Bind(绑定事件)的使用示例

2、绑定键盘事件并获取事件属性

# -*- encoding=utf-8 -*-
import tkinter
from tkinter import *


def keyboard_event(event):
  char = event.char
  print('回车 char:{}'.format(char))
  key_code = event.keycode
  print('回车 key code:{}'.format(key_code))


def entry_enter(event):
  print('输入的内容为:' + entry.get())


def shift_f(event):
  print('SHIFT + F')
  print(event.char)
  print(event.keycode)


def num_lock(event):
  print('num_lock')
  print(event.char)
  print(event.keycode)


if __name__ == '__main__':
  win = tkinter.Tk() # 窗口
  win.title('南风丶轻语') # 标题
  screenwidth = win.winfo_screenwidth() # 屏幕宽度
  screenheight = win.winfo_screenheight() # 屏幕高度
  width = 500
  height = 300
  x = int((screenwidth - width) / 2)
  y = int((screenheight - height) / 2)
  win.geometry('{}x{}+{}+{}'.format(width, height, x, y)) # 大小以及位置

  label = Label(text='标签', relief='g', font=('黑体', 20))
  label.pack(pady=10)
  label.focus_set()
  label.bind('<Return>', keyboard_event) # 按下回车
  label.bind('<Shift F>', shift_f)
  label.bind('<Num_Lock>', num_lock)

  entry = Entry()
  entry.pack()
  entry.bind('<Return>', entry_enter) # 按下回车

  win.mainloop()

Python tkinter之Bind(绑定事件)的使用示例

以上就是Python tkinter之Bind(绑定事件)的使用示例的详细内容,更多关于python tkinter Bind(绑定事件)的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python中使用urllib2获取http请求状态码的代码例子
Jul 07 Python
Python入门篇之条件、循环
Oct 17 Python
Python中操作符重载用法分析
Apr 29 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
Jan 30 Python
Python操作配置文件ini的三种方法讲解
Feb 22 Python
python实现两个一维列表合并成一个二维列表
Dec 02 Python
django的403/404/500错误自定义页面的配置方式
May 21 Python
Keras中 ImageDataGenerator函数的参数用法
Jul 03 Python
解决运行出现'dict' object has no attribute 'has_key'问题
Jul 15 Python
如何用python插入独创性声明
Mar 31 Python
聊聊pytorch测试的时候为何要加上model.eval()
May 23 Python
python cv2图像质量压缩的算法示例
Jun 04 Python
pycharm配置python 设置pip安装源为豆瓣源
Feb 05 #Python
在PyCharm中安装PaddlePaddle的方法
Feb 05 #Python
python实现录制全屏和选择区域录屏功能
Feb 05 #Python
pycharm 使用anaconda为默认环境的操作
Feb 05 #Python
通用的Django注册功能模块实现方法
Feb 05 #Python
Pycharm 设置默认解释器路径和编码格式的操作
Feb 05 #Python
ASP.NET Core中的配置详解
Feb 05 #Python
You might like
并发下常见的加锁及锁的PHP具体实现代码
2010/10/12 PHP
PHP 安全检测代码片段(分享)
2013/07/05 PHP
基于php中使用excel的简单介绍
2013/08/02 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
jQuery 动画基础教程
2008/12/25 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
javascript回到顶部特效
2016/07/30 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
vue组件间通信解析
2017/03/01 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
Python中使用select模块实现非阻塞的IO
2015/02/03 Python
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
python遍历数组的方法小结
2015/04/30 Python
python查看FTP是否能连接成功的方法
2015/07/30 Python
Python面向对象之继承代码详解
2018/01/29 Python
django框架自定义用户表操作示例
2018/08/07 Python
Python对象转换为json的方法步骤
2019/04/25 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
Python中的wordcloud库安装问题及解决方法
2020/05/27 Python
Python之多进程与多线程的使用
2021/02/23 Python
说出你对remoting 和webservice的理解和应用
2014/06/08 面试题
银行财务部实习生的自我鉴定
2013/11/27 职场文书
会计试用期自我评价怎么写
2014/09/18 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
投诉书范文
2015/07/02 职场文书
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript