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 with的用法
Aug 22 Python
Python中规范定义命名空间的一些建议
Jun 04 Python
详解Python中的文件操作
Aug 28 Python
JSONLINT:python的json数据验证库实例解析
Nov 28 Python
Python学习pygal绘制线图代码分享
Dec 09 Python
网红编程语言Python将纳入高考你怎么看?
Jun 07 Python
Python 加密与解密小结
Dec 06 Python
Python3.5面向对象编程图文与实例详解
Apr 24 Python
对Django中的权限和分组管理实例讲解
Aug 16 Python
python 解决print数组/矩阵无法完整输出的问题
Feb 19 Python
Tensorflow中的降维函数tf.reduce_*使用总结
Apr 20 Python
Django Session和Cookie分别实现记住用户登录状态操作
Jul 02 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加速 eAccelerator配置和使用指南
2009/06/05 PHP
JS 网站性能优化笔记
2011/05/24 PHP
php类常量的使用详解
2013/06/08 PHP
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
2016/10/11 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
如何用js控制css中的float的代码
2007/08/16 Javascript
JavaScript定义类或函数的几种方式小结
2011/01/09 Javascript
收集的10个免费的jQuery相册
2011/02/26 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
js仿3366小游戏选字游戏
2016/04/14 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
2016/07/12 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
Vue中使用Sortable的示例代码
2018/04/07 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
2019/09/27 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
AngularJs的$http发送POST请求,php无法接收Post的数据问题及解决方案
2020/08/13 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
Python教程之全局变量用法
2016/06/27 Python
详解python如何在django中为用户模型添加自定义权限
2018/10/15 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
python3实现微型的web服务器
2019/09/03 Python
Python内存映射文件读写方式
2020/04/24 Python
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
护理专业毕业生推荐信
2013/10/31 职场文书
大学专科生推荐信范文
2013/11/23 职场文书
领导干部作风建设自查报告
2014/10/23 职场文书
优秀团员个人总结
2015/02/26 职场文书
综合素质评价个性发展自我评价
2015/03/06 职场文书
Win10鼠标轨迹怎么开 Win10显示鼠标轨迹方法
2022/04/06 数码科技
详解SQL报错盲注
2022/07/23 SQL Server