python tkinter,tkinter事件列表

  python tkinter,tkinter事件列表

  事件处理是GUI程序不可或缺的重要组成部分。相比较而言,控制器只是机器的组成部分。本文将详细介绍Tkinter中的事件处理程序,有需要的可以参考。

  00-1010事件绑定方法事件处理是GUI程序不可或缺的重要组成部分。相比较而言,控件只是一台机器的组件,事件处理才是驱动机器正常运行的关键。它可以优雅地连接组件,因此“事件处理”可谓是GUI程序的“灵魂”,也是人机交互的实现。

  在解释控件时,偶尔会提到“事件”一词。在本节中,我们将更详细地介绍Tkinter中的事件处理程序。

  在一个GUI程序中,我们把用户在软件上的操作统称为“事件”,比如点击鼠标上的按钮,在键盘上输入文本以及窗口管理器触发的重绘事件。这些事件有一个共同的特点,就是都是由用户自己直接或间接触发的。

  

目录

  Tkinter提供的事件处理机制允许我们为“控件”绑定相应的事件和事件处理函数(即回调函数),从而实现控件与用户的交互。其语法格式如下:

  widget.bind(event ,func)

  在上面的语法中,widget表示控件的实例对象,然后用bind()方法绑定事件。该函数有两个参数:

  Event:表示事件类型的字符串参数,以“尖括号”的形式包装;Func:表示事件处理函数(callback,即回调函数)。当事件被触发时,Tk会携带事件对象(event)调用func方法。注意:bind()方法可以将事件绑定到处理程序,而unbind()方法可以将事件从处理程序中解除绑定。

  

事件绑定方法

  类型(也叫事件代码)由Tkinter模块指定,主要包括鼠标、键盘、光标等相关事件。Tkinter为其指定了相应的语法格式:

  修改量-类型-详细信息

  上述语法由三部分组成,解释如下:

  :事件类型必须包含在“尖括号”中;修饰符:可选,事件类型的修饰符,通常用于描述组合键、双击双击-Button-1、大写锁定键、Alt-Shift等。类型:是必选项,表示事件的具体类型;Detail:可选,通常用来描述具体是哪个键,例如Button-1表示鼠标左键;这里,有必要简单介绍一下常用的修饰语。修改器可以修改事件的激活条件,比如双击鼠标或者同时按下一个键来触发事件。常用的修饰词如下:

  修饰符描述:控件事件发生时按住Control键,Alt事件发生时按住Alt键,Shift事件发生时按住Shift键,事件发生时锁定事件。双事件连续发生两次,比如双击鼠标。三重事件连续发生三次,四重事件连续发生四次。下表描述了Tkinter中常用的事件类型,如下所示:

  代码描述按钮Press-1单击鼠标左键,缩写为Button-1,后面的数字可以是1/2/3,分别代表鼠标左键、中间滑轮和右键按钮Release-1释放鼠标左键。

  ,后面数字可以是1/2/3,分别代表释放左键、滑轮、右键<B1-Motion>按住鼠标左键移动,<B2-Motion>和<B3-Motion>分别表示按住鼠标滑轮移动、右键移动<MouseWheel>转动鼠标滑轮<Double-Button-1>双击鼠标左键<Enter>鼠标光标进入控件实例<Leave>鼠标光标离开控件实例<Key>按下键盘上的任意键<KeyPress-字母>/<KeyPress-数字>按下键盘上的某一个字母或者数字键<KeyRelease>释放键盘上的按键<Return>回车键,其他同类型键有<Shift>/<Tab>/<Control>/<Alt><Space>空格键<UP>/<Down>/<Left>/<Right>方向键<F1>...<F12>常用的功能键<Control-Alt>组合键,再比如<Control-Shift-KeyPress-T>,表示用户同时点击 Ctrl + Shift + T<FocusIn>当控件获取焦点时候触发,比如鼠标点击输入控件输入内容,可以调用 focus_set() 方法使控件获得焦点<FocusOut>当控件失去焦点时激活,比如当鼠标离开输入框的时候<Configure>控件的发生改变的时候触发事件,比如调整了控件的大小等<Deactivate>当控件的状态从激活变为未激活时触发事件<Destroy>当控件被销毁的时候触发执行事件的函数<Expose>当窗口或组件的某部分不再被覆盖的时候触发事件<Visibility>当应用程序至少有一部分在屏幕中是可见状态时触发事件

  

  

Event事件对象

  当事件触发后,Tkinter 会自动将事件对象交给回调函数进行下步的处理,Event 对象包含了以下常用属性:

  属性说明widget发生事件的是哪一个控件x,y相对于窗口的左上角而言,当前鼠标的坐标位置x_root,y_root相对于屏幕的左上角而言,当前鼠标的坐标位置char用来显示所按键相对应的字符keysym按键名,比如 Control_L 表示左边的 Ctrl 按键keycode按键码,一个按键的数字编号,比如 Delete 按键码是107num1/2/3中的一个,表示点击了鼠标的哪个按键,按键分为左、中、右width,height控件的修改后的尺寸,对应着 <Configure>事件type事件类型

  下面看一组关于键盘事件的使用示例:

  

from tkinter import *

  # 定义事件函数,必须用event参数

  def show_key(event):

   # 查看触发事件的按钮

   s=event.keysym

   # 将其显示在按钮控件上

   lb.config(text=s)

  root=Tk()

  root.config(bg=#87CEEB)

  root.title("C语言中文网")

  root.geometry(450x350+300+200)

  root.iconbitmap(C:/Users/Administrator/Desktop/C语言中文网logo.ico)

  # 添加一个按钮控件

  lb=Label(root,text=请按键,fg=blue,font=(微软雅黑,15))

  # 给按钮控件绑定事件,按下任意键,然后调用事件处理函数。注意,此处需要在英文状态下进行输入

  lb.bind(<Key>,show_key)

  # 设置按钮获取焦点

  lb.focus_set()

  lb.pack()

  # 显示窗口

  root.mainloop()

  程序运行结果如下:

  

  

图1:Tkinter事件处理

  注意:在上述示例中,只有当 Label 控件获取焦点后才能接收键盘事件,因此在给控件绑定事件和回调函数后,需要使用 focus_set() 方法来获取焦点。

  下面再看一组关于鼠标事件的相关示例:

  

# 定义事件函数

  from tkinter import *

  def handleMotion(event):

   lb1[text] = 你移动了光标的所在位置

   lb2[text] = 目前光标位置:x =+ str(event.x)+;y=+str(event.y)

   print(光标当前位置,event.x,event.y)

  # 创建主窗口

  win = Tk()

  win.config(bg=#87CEEB)

  win.title("C语言中文网")

  win.geometry(450x350+300+200)

  win.iconbitmap(C:/Users/Administrator/Desktop/C语言中文网logo.ico)

  # 创建一个窗体容器frame

  frame = Frame (win, relief=RAISED, borderwidth=2, width=300,height=200)

  frame.bind(<Motion>,handleMotion)

  lb1 = Label(frame,text=没有任何事件触发, bg=purple, )

  # 使用place进行位置布局,下一节会介绍

  lb1.place (x=20,y=20)

  lb2 = Label(frame,text=)

  lb2.place (x=16,y=60)

  frame.pack(side=TOP)

  # 显示窗口

  win.mainloop()

  程序运行结果如下:

  

  

图2:Tkinter鼠标移动事件

  以上就是Python Tkinter之事件处理详解的详细内容,更多关于Python Tkinter事件处理的资料请关注盛行IT软件开发工作室其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: