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调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
Aug 15 Python
Python Tkinter基础控件用法
Sep 03 Python
Python断言assert的用法代码解析
Feb 03 Python
Python二叉树定义与遍历方法实例分析
May 25 Python
Python 脚本获取ES 存储容量的实例
Dec 27 Python
python读出当前时间精度到秒的代码
Jul 05 Python
Python编译成.so文件进行加密后调用的实现
Dec 23 Python
Pytorch之finetune使用详解
Jan 18 Python
基于TensorBoard中graph模块图结构分析
Feb 15 Python
Python发送邮件封装实现过程详解
May 09 Python
python开发前景如何
Jun 11 Python
python如何利用paramiko执行服务器命令
Nov 07 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 获取远程文件内容的函数代码
2010/03/24 PHP
一段实时更新的时间代码
2006/07/07 Javascript
基于jquery的用鼠标画出可移动的div
2012/09/06 Javascript
js控制frameSet示例
2013/09/10 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
inner join 内联与left join 左联的实例代码
2017/09/18 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
python实现哈希表
2014/02/07 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
Python实现的合并两个有序数组算法示例
2019/03/04 Python
Django REST Framework之频率限制的使用
2019/09/29 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
logging level级别介绍
2020/02/21 Python
Python动态强类型解释型语言原理解析
2020/03/25 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
美国知名女性服饰品牌:New York & Company
2017/03/23 全球购物
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
应届生骨科医生求职信
2013/10/31 职场文书
迟到检讨书800字
2014/01/13 职场文书
企业内部培训方案
2014/02/04 职场文书
幼儿园教师的考核评语
2014/04/18 职场文书
应急管理培训方案
2014/06/12 职场文书
领导班子在批评与自我批评座谈会上的发言
2014/09/28 职场文书
教师求职自荐信范文
2015/03/04 职场文书
投标单位介绍信
2015/05/05 职场文书
回复函格式及范文
2015/07/14 职场文书
如何理解及使用Python闭包
2021/06/01 Python
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技
GO语言异常处理分析 err接口及defer延迟
2022/04/14 Golang