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计算程序开始到程序结束的运行时间和程序运行的CPU时间
Nov 28 Python
Python中用sleep()方法操作时间的教程
May 22 Python
基于Python列表解析(列表推导式)
Jun 23 Python
PyCharm设置护眼背景色的方法
Oct 29 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
python操作小程序云数据库实现简单的增删改查功能
Jun 06 Python
django数据模型(Model)的字段类型解析
Dec 25 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
Mar 23 Python
在Matplotlib图中插入LaTex公式实例
Apr 17 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
Jun 03 Python
Python容器类型公共方法总结
Aug 19 Python
基于Python 函数和方法的区别说明
Mar 24 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生成文件
2007/01/15 PHP
PHP 网页过期时间的控制代码
2009/06/29 PHP
php 验证码实例代码
2010/06/01 PHP
php使HTML标签自动补全闭合函数代码
2012/10/04 PHP
php xml常用函数的集合(比较详细)
2013/06/06 PHP
自制PHP框架之设计模式
2017/05/07 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
JavaScript For Beginners(转载)
2007/01/05 Javascript
Prototype使用指南之array.js
2007/01/10 Javascript
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
2012/05/11 Javascript
JavaScript和CSS通过expression实现Table居中显示
2013/06/28 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
js兼容pc端浏览器并有多种弹出小提示的手机端浮层控件实例
2015/04/29 Javascript
jQuery实现仿腾讯微博滑出效果报告每日天气的方法
2015/05/11 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
2016/08/16 Javascript
javascript实现鼠标点击页面 移动DIV
2016/12/02 Javascript
Angular中$state.go页面跳转并传递参数的方法
2017/05/09 Javascript
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
js实现QQ邮箱邮件拖拽删除功能
2020/08/27 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
Linux中Python 环境软件包安装步骤
2016/03/31 Python
Python简单I/O操作示例
2019/03/18 Python
使用django和vue进行数据交互的方法步骤
2019/11/11 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
KEEN美国官网:美国人气户外休闲鞋品牌
2021/03/09 全球购物
医药代表个人求职信范本
2013/12/19 职场文书
如何写辞职书
2015/02/26 职场文书
方法汇总:Python 安装第三方库常用
2022/04/26 Python