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 相关文章推荐
用ReactJS和Python的Flask框架编写留言板的代码示例
Dec 19 Python
Python中easy_install 和 pip 的安装及使用
Jun 05 Python
TensorFlow实现Batch Normalization
Mar 08 Python
python实现生成字符串大小写字母和数字的各种组合
Jan 01 Python
python实现简单日期工具类
Apr 24 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
python 根据字典的键值进行排序的方法
Jul 24 Python
Django REST framework 单元测试实例解析
Nov 07 Python
python-sys.stdout作为默认函数参数的实现
Feb 21 Python
django restframework serializer 增加自定义字段操作
Jul 15 Python
Python DES加密实现原理及实例解析
Jul 17 Python
Python中免验证跳转到内容页的实例代码
Oct 23 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超快高效率统计大文件行数
2015/07/05 PHP
让你的PHP7更快之Hugepage用法分析
2016/05/31 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
2019/06/12 PHP
Javascript-Mozilla和IE中的一个函数直接量的问题
2007/01/09 Javascript
Javascript图像处理—亮度对比度应用案例
2013/01/03 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
JavaScript实现点击按钮字体放大、缩小
2016/02/29 Javascript
聊一聊JavaScript作用域和作用域链
2016/05/03 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
2017/01/19 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
一个简单的node.js界面实现方法
2018/06/01 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
[02:27]《DAC最前线》之附加赛征程
2015/01/29 DOTA
python网络爬虫采集联想词示例
2014/02/11 Python
Python书单 不将就
2017/07/11 Python
python的exec、eval使用分析
2017/12/11 Python
python实现一个点绕另一个点旋转后的坐标
2019/12/04 Python
浅谈Python中的继承
2020/06/19 Python
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
在阿尔卑斯山或希腊度过快乐假期:Alpine Elements
2019/12/28 全球购物
护理自荐信范文
2013/10/05 职场文书
实习生体会的自我评价范文
2013/11/28 职场文书
安全生产月宣传标语
2014/10/06 职场文书
科学发展观标语
2014/10/08 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
写给父母的感谢信
2015/01/22 职场文书
2015选调生工作总结
2015/07/24 职场文书
python实现socket简单通信的示例代码
2021/04/13 Python
python中的random模块和相关函数详解
2022/04/22 Python
Android基础入门之dataBinding的简单使用教程
2022/06/21 Java/Android