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  __getattr__与__setattr__使用方法
Sep 06 Python
Python 元组(Tuple)操作详解
Mar 11 Python
Python是编译运行的验证方法
Jan 30 Python
python利用装饰器进行运算的实例分析
Aug 04 Python
详解python中的 is 操作符
Dec 26 Python
python opencv 图像尺寸变换方法
Apr 02 Python
对python生成业务报表的实例详解
Feb 03 Python
python 为什么说eval要慎用
Mar 26 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
Oct 24 Python
8段用于数据清洗Python代码(小结)
Oct 31 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
Jun 17 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
一个用php3编写的简单计数器
2006/10/09 PHP
PHP实现文件上传功能实例代码
2017/05/18 PHP
PHP实现通过文本文件统计页面访问量功能示例
2019/02/13 PHP
laravel 实现设置时区的简单方法
2019/10/10 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
Javascript 继承实现例子
2009/08/12 Javascript
HTML Dom与Css控制方法
2010/10/25 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
JavaScript前端开发之实现二进制读写操作
2015/11/04 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
2016/05/05 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
2017/08/18 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
跟混乱的页面弹窗说再见
2019/04/11 Javascript
实例分析javascript中的异步
2020/06/02 Javascript
python学习手册中的python多态示例代码
2014/01/21 Python
Python代码实现KNN算法
2017/12/20 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
Django框架下静态模板的继承操作示例
2019/11/08 Python
wxpython+pymysql实现用户登陆功能
2019/11/19 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
Python使用grequests并发发送请求的示例
2020/11/05 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
html5唤醒APP小记
2019/03/27 HTML / CSS
村长反四风问题个人对照检查材料
2014/09/21 职场文书
少先队辅导员事迹材料
2014/12/24 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript