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写的创建文件夹自定义函数mkdir()
Aug 25 Python
在Django框架中运行Python应用全攻略
Jul 17 Python
Python实现自动添加脚本头信息的示例代码
Sep 02 Python
解决Python中字符串和数字拼接报错的方法
Oct 23 Python
Python极简代码实现杨辉三角示例代码
Nov 15 Python
Python 专题二 条件语句和循环语句的基础知识
Mar 19 Python
Python之多线程爬虫抓取网页图片的示例代码
Jan 10 Python
100行Python代码实现自动抢火车票(附源码)
Jan 11 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
May 09 Python
Python 列表的清空方式
Jan 13 Python
pytorch实现对输入超过三通道的数据进行训练
Jan 15 Python
Python djanjo之csrf防跨站攻击实验过程
May 14 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
基于xcache的配置与使用详解
2013/06/18 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
[原创]保存的js无法执行的解决办法
2007/02/25 Javascript
Javascript 更新 JavaScript 数组的 uniq 方法
2008/01/23 Javascript
javascript json 新手入门文档
2009/12/03 Javascript
File, FileReader 和 Ajax 文件上传实例分析(php)
2011/04/27 Javascript
javaScript 利用闭包模拟对象的私有属性
2011/12/29 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
2012/08/17 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
js进行表单验证实例分析
2015/02/10 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
详解JavaScript中数组的reduce方法
2016/12/02 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
JS使用for in有序获取对象数据
2020/05/19 Javascript
Python实现配置文件备份的方法
2015/07/30 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
在dataframe两列日期相减并且得到具体的月数实例
2018/07/03 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
2018/11/07 Python
HTML5文档结构标签
2017/04/21 HTML / CSS
html5弹跳球示例代码
2013/07/23 HTML / CSS
用html5的canvas和JavaScript创建一个绘图程序的简单实例
2016/07/06 HTML / CSS
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
校园门卫岗位职责
2013/12/09 职场文书
创业大赛策划书
2014/03/01 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
CSS3实现的侧滑菜单
2021/04/27 HTML / CSS