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中的__init__()方法
May 02 Python
Python编程实现正则删除命令功能
Aug 30 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
Nov 20 Python
python3+requests接口自动化session操作方法
Oct 13 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
Dec 16 Python
python标记语句块使用方法总结
Aug 05 Python
python中的线程threading.Thread()使用详解
Dec 17 Python
python定义类self用法实例解析
Jan 22 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
Oct 22 Python
浅谈Python列表嵌套字典转化的问题
Apr 07 Python
Python利用机器学习算法实现垃圾邮件的识别
Jun 28 Python
Python可视化学习之seaborn调色盘
Feb 24 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中iconv函数使用方法
2008/05/24 PHP
PHP获取网站域名和地址的代码
2008/08/17 PHP
Zend的MVC机制使用分析(二)
2013/05/02 PHP
php利用array_search与array_column实现二维数组查找
2019/07/08 PHP
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
快速解决jQuery与其他库冲突的方法介绍
2014/01/02 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
JS实现仿百度文库评分功能
2017/01/12 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
javascript实现延时显示提示框效果
2017/06/01 Javascript
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
vue2.0 和 animate.css的结合使用
2017/12/12 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
2018/08/24 Javascript
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
js实现鼠标滑动到某个div禁止滚动
2020/09/17 Javascript
[02:32]“虐狗”镜头慎点 2016国际邀请赛中国区预选赛现场玩家采访
2016/06/28 DOTA
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
Python-ElasticSearch搜索查询的讲解
2019/02/25 Python
Django 实现admin后台显示图片缩略图的例子
2019/07/28 Python
Python列表如何更新值
2020/05/27 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
领先的英国注册在线药房 :Simply Meds Online
2019/03/28 全球购物
《海底世界》教学反思
2014/04/16 职场文书
项目投资合作意向书
2014/07/29 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
大四学生个人总结
2015/02/15 职场文书
杨善洲观后感
2015/06/04 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
创业计划书之校园跑腿公司
2019/09/24 职场文书
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
2022/03/22 MySQL