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使用cStringIO实现临时内存文件访问的方法
Mar 26 Python
Python性能提升之延迟初始化
Dec 04 Python
python 实现求解字符串集的最长公共前缀方法
Jul 20 Python
Python列表生成式与生成器操作示例
Aug 01 Python
在python环境下运用kafka对数据进行实时传输的方法
Dec 27 Python
python实现维吉尼亚加密法
Mar 20 Python
Tkinter中复选菜单是否被选中的判断与设置方式
Mar 04 Python
Python QT组件库qtwidgets的使用
Nov 02 Python
python搜索算法原理及实例讲解
Nov 18 Python
python自动从arxiv下载paper的示例代码
Dec 05 Python
python实现求纯色彩图像的边框
Apr 08 Python
python解析照片拍摄时间进行图片整理
Jul 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获取目录所有文件并将结果保存到数组(实例)
2013/10/25 PHP
PHP 极验验证码实例讲解
2016/09/29 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
JavaScript 一道字符串分解的题目
2011/08/03 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
详解JavaScript中localStorage使用要点
2016/01/13 Javascript
Angular 根据 service 的状态更新 directive
2016/04/03 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
jquery判断类型是不是number类型的实例代码
2016/10/07 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
2016/11/24 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
vue组件传值的实现方式小结【三种方式】
2020/02/05 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
[06:25]DOTA2英雄梦之声_第17期_大地之灵
2014/06/20 DOTA
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
使用Python+Splinter自动刷新抢12306火车票
2018/01/03 Python
Python 数据处理库 pandas进阶教程
2018/04/21 Python
Jupyter Notebook 安装配置与使用详解
2021/01/06 Python
HTML5之SVG 2D入门7—SVG元素的重用与引用
2013/01/30 HTML / CSS
使用纯HTML5编写一款网页上的时钟的代码分享
2015/11/16 HTML / CSS
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/04/11 面试题
环境工程求职简历的自我评价范文
2013/10/24 职场文书
企业安全生产月活动总结
2014/07/05 职场文书
2014乡镇班子个人对照检查材料思想汇报
2014/09/26 职场文书
2014年医院后勤工作总结
2014/12/06 职场文书
公司内部升职自荐信
2015/03/27 职场文书
保护环境建议书作文300字
2015/09/14 职场文书
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python