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学习RabbitMQ消息队列
Nov 30 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
Python创建对称矩阵的方法示例【基于numpy模块】
Oct 12 Python
Python实现读取json文件到excel表
Nov 18 Python
python中使用PIL制作并验证图片验证码
Mar 15 Python
python3处理含有中文的url方法
May 10 Python
Python实现快速傅里叶变换的方法(FFT)
Jul 21 Python
在python中利用KNN实现对iris进行分类的方法
Dec 11 Python
pytorch对梯度进行可视化进行梯度检查教程
Feb 04 Python
pyautogui自动化控制鼠标和键盘操作的步骤
Apr 01 Python
python读取hdfs上的parquet文件方式
Jun 06 Python
用Python将GIF动图分解成多张静态图片
Jun 11 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+jquery编码方面的一些心得(utf-8 gb2312)
2010/10/12 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
简单实现php上传文件功能
2017/09/21 PHP
jQuery学习笔记之jQuery原型属性和方法
2014/06/09 Javascript
JS判断变量是否为空判断是否null
2014/07/25 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
2015/08/18 Javascript
node.js插件nodeclipse安装图文教程
2020/10/19 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
jQuery页面弹出框实现文件上传
2017/02/09 Javascript
vue v-on监听事件详解
2017/05/17 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
100行代码实现一个vue分页组功能
2018/11/06 Javascript
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
python 域名分析工具实现代码
2009/07/15 Python
python操作oracle的完整教程分享
2018/01/30 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
用Python徒手撸一个股票回测框架搭建【推荐】
2019/08/05 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
公司财务自我评价分享
2013/12/17 职场文书
个人求职信范文分享
2014/01/06 职场文书
个人租房协议书
2014/04/09 职场文书
公司应聘求职信
2014/06/21 职场文书
继承公证书格式
2015/01/26 职场文书
2015年资料员工作总结
2015/04/25 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
Python中Permission denied的解决方案
2021/04/02 Python
从原生JavaScript到React深入理解
2022/07/23 Javascript