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 MD5文件生成码
Jan 12 Python
Python标准库defaultdict模块使用示例
Apr 28 Python
分析并输出Python代码依赖的库的实现代码
Aug 09 Python
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
Oct 18 Python
Python下的常用下载安装工具pip的安装方法
Nov 13 Python
详谈Python高阶函数与函数装饰器(推荐)
Sep 30 Python
使用anaconda的pip安装第三方python包的操作步骤
Jun 11 Python
Python日志模块logging基本用法分析
Aug 23 Python
Python run()函数和start()函数的比较和差别介绍
May 03 Python
python如何控制进程或者线程的个数
Oct 16 Python
Django如何创作一个简单的最小程序
May 12 Python
Django rest framework如何自定义用户表
Jun 09 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
跟我学Laravel之请求与输入
2014/10/15 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
微信小程序 消息推送php服务器验证实例详解
2017/03/30 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
Cookie 注入是怎样产生的
2009/04/08 Javascript
JQUERY 浏览器判断实现函数
2009/08/20 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
window.returnValue使用方法示例介绍
2014/07/03 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
javascript另类方法实现htmlencode()与htmldecode()函数实例分析
2016/11/17 Javascript
浅谈jquery选择器 :first与:first-child的区别
2016/11/20 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
django的聚合函数和aggregate、annotate方法使用详解
2019/07/23 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
2020/07/02 Python
python3排序的实例方法
2020/10/20 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
汉森批发:Hansen Wholesale
2018/05/24 全球购物
越南综合购物网站:Lazada越南
2019/06/10 全球购物
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
写求职信有什么意义
2014/02/17 职场文书
房屋租赁协议书
2014/04/10 职场文书
干部四风问题整改措施思想汇报
2014/10/13 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
python爬虫框架feapde的使用简介
2021/04/20 Python
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL
阿里云服务器部署RabbitMQ集群的详细教程
2022/06/01 Servers
MySQL控制流函数(-if ,elseif,else,case...when)
2022/07/07 MySQL