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 Django(图文)
Nov 04 Python
python中使用enumerate函数遍历元素实例
Jun 16 Python
Python 登录网站详解及实例
Apr 11 Python
遗传算法之Python实现代码
Oct 10 Python
Python基于scipy实现信号滤波功能
May 08 Python
Python使用sklearn库实现的各种分类算法简单应用小结
Jul 04 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
Aug 15 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
Sep 16 Python
python爬虫模拟浏览器的两种方法实例分析
Dec 09 Python
django 多数据库及分库实现方式
Apr 01 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
Apr 17 Python
Python pyecharts绘制条形图详解
Apr 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简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
基于PHP magic_quotes_gpc的使用方法详解
2013/06/24 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
[JS源码]超长文章自动分页(客户端版)
2007/01/09 Javascript
js 表单验证方法(实用)
2009/04/28 Javascript
Extjs学习笔记之一 初识Extjs之MessageBox
2010/01/07 Javascript
JavaScript去掉数组中的重复元素
2011/01/13 Javascript
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
Bootstrap布局之栅格系统详解
2016/06/13 Javascript
confirm确认对话框的实现方法总结
2016/06/17 Javascript
js使用i18n实现页面国际化的方法
2017/05/09 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
2019/12/02 Javascript
简单文件操作python 修改文件指定行的方法
2013/05/15 Python
Python实现从脚本里运行scrapy的方法
2015/04/07 Python
python 基础教程之Map使用方法
2017/01/17 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
2018/01/04 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
Django的models模型的具体使用
2019/07/15 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
2019/09/28 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
2020/01/13 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
2020/03/18 Python
python爬取招聘要求等信息实例
2020/11/20 Python
HTML5 canvas 瀑布流文字效果的示例代码
2018/01/31 HTML / CSS
Coltorti Boutique官网:来自意大利的设计师品牌买手店
2018/11/09 全球购物
自考生毕业自我鉴定
2013/10/10 职场文书
2014年团支部工作总结
2014/11/17 职场文书
2014年生产管理工作总结
2014/12/23 职场文书
爱的教育观后感
2015/06/17 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书