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 Web框架Flask下网站开发入门实例
Feb 08 Python
Python+matplotlib实现填充螺旋实例
Jan 15 Python
numpy.random.seed()的使用实例解析
Feb 03 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
python实现抖音视频批量下载
Jun 20 Python
pyspark操作MongoDB的方法步骤
Jan 04 Python
python pandas库的安装和创建
Jan 10 Python
Python2 Selenium元素定位的实现(8种)
Feb 25 Python
Python字符串大小写转换拼接删除空白
Sep 19 Python
python实现WebSocket服务端过程解析
Oct 18 Python
Python字符串函数strip()原理及用法详解
Jul 23 Python
Python数据分析之绘图和可视化详解
Jun 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
饭制《星际争霸》Mod:优化游戏机制 增加新单位
2017/07/02 星际争霸
ajax+php打造进度条 readyState各状态
2010/03/20 PHP
PHP系统命令函数使用分析
2013/07/05 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
Cookie 小记
2010/04/01 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
jQuery简单实现隐藏以及显示特效
2015/02/26 Javascript
基于jQuery的Web上传插件Uploadify使用示例
2016/05/19 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
Bootstrap笔记之缩略图、警告框实例详解
2017/03/09 Javascript
微信小程序之前台循环数据绑定
2017/08/18 Javascript
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
javascript canvas API内容整理
2020/02/16 Javascript
Python模拟登录12306的方法
2014/12/30 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
2016/05/24 Python
Python自定义函数定义,参数,调用代码解析
2017/12/27 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
selenium+PhantomJS爬取豆瓣读书
2019/08/26 Python
Windows平台Python编程必会模块之pywin32介绍
2019/10/01 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
Python中logging日志库实例详解
2020/02/19 Python
使用HTML5的链接预取功能(link prefetching)给网站提速
2012/12/13 HTML / CSS
有关HTML5页面在iPhoneX适配问题
2017/11/13 HTML / CSS
美国摄影爱好者购物网站:Focus Camera
2016/10/21 全球购物
高三自我鉴定怎么写
2013/10/19 职场文书
开发房地产协议书
2014/09/14 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
2019年工作总结范文
2019/05/21 职场文书
浅谈Golang 嵌套 interface 的赋值问题
2021/04/29 Golang
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS
div与span之间的区别与使用介绍
2021/12/06 HTML / CSS
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python