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 获取本机ip地址的两个方法
Feb 25 Python
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
Apr 25 Python
Python下使用Psyco模块优化运行速度
Apr 05 Python
python创建一个最简单http webserver服务器的方法
May 08 Python
儿童学习python的一些小技巧
May 27 Python
python面试题小结附答案实例代码
Apr 11 Python
2019 Python最新面试题及答案16道题
Apr 11 Python
详解python中的线程与线程池
May 10 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
Mar 30 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
Apr 27 Python
python实现数字炸弹游戏程序
Jul 17 Python
python如何爬取动态网站
Sep 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
PHP中图片等比缩放的实例
2013/03/24 PHP
记录mysql性能查询过程的使用方法
2013/05/02 PHP
解析如何屏蔽php中的phpinfo()函数
2013/06/06 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
2015/10/16 PHP
php简单实现单态设计模式的方法分析
2017/07/28 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
PHP abstract 抽象类定义与用法示例
2018/05/29 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
js select常用操作控制代码
2010/03/16 Javascript
jQuery 源码分析笔记(7) Queue
2011/06/19 Javascript
探索Emberjs制作一个简单的Todo应用
2012/11/07 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
微信小程序使用二次贝塞尔曲线画波浪
2018/12/25 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
Pycharm无法使用已经安装Selenium的解决方法
2018/10/13 Python
pyshp创建shp点文件的方法
2018/12/31 Python
python 利用文件锁单例执行脚本的方法
2019/02/19 Python
深入了解Django中间件及其方法
2019/07/26 Python
django基于cors解决跨域请求问题详解
2019/08/06 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
如何用Matlab和Python读取Netcdf文件
2021/02/19 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
database面试题
2013/03/28 面试题
反腐倡廉标语
2014/06/24 职场文书
资源环境与城乡规划管理专业自荐书
2014/09/26 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
见习期个人总结
2015/03/05 职场文书
篮球比赛通讯稿
2015/07/18 职场文书
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android