当前位置:   article > 正文

Tkinter 事件与回调_tkinter callback

tkinter callback

代码访问GitHub: https://github.com/Roc-J/Python-turtle/tree/master/code16

  • 命令绑定 将简单的组件绑定到function函数上
  • 如果需要处理参数的话,使用lambda函数
  • 事件绑定可以使用 widget.bind(事件,回调)方法将键盘和鼠标的事件响应绑定到窗口小组件上,并在发生某些事件时调用回调的事件绑定。
  • 如何传递额外的参数到一个callback
  • 怎样将事件绑定到整个应用程序或特定类的窗口小部件(通过使用bind_all()和bind_class())

给程序添加生命

小部件功能响应函数 包括按下按钮,鼠标点击等事件,这需要将回调关联到特定事件。

命令绑定

最简单方式来增加函数方法到一个按钮称作command binding从而回调函数以command=some_callback形式提到窗口小部件

举一个简单的例子来进行简单的实例

def my_callback():
    # do something 
Button(root,text="Click",command=my_callback())
  • 1
  • 2
  • 3

传递参数到回调

如果回调需要一些参数,我们可以使用lambda函数:

def my_callback(somearg):
    # do something with argument

Button(root,text="Click",command=lambda:my_callback('some argument'))
  • 1
  • 2
  • 3
  • 4

事件绑定

Tkinter提供一种称为bind()的事件绑定机制的替代形式来处理不同的事件,绑定事件的标准语法如下:

widget.bind(event,handler)
下面举一个例子来详细的说明

from Tkinter import *

root = Tk()
Label(root,text='Click at different \n locations in the frame below').pack()
def callback(event):
    print dir(event)
    print "you clicked at",event.x,event.y

myframe = Frame(root,bg='khaki',width=130,height=80)
myframe.bind("<Button-1>",callback)
myframe.pack()

root.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

程序说明:
(1)程序生成一个窗口root,pack()一个标签Label
(2)生成一个Frame放置在root上,并进行属性的设置,并将该frame绑定一个函数callback
(3)callback函数将显示event下的dir目录和输出一句话。

事件模式

  • 鼠标左击
  • 鼠标按钮中建点击
  • 鼠标右击
  • 键盘按键B
  • 键盘按下Alt+Ctrl+Delete

事件 属性说明
char 从键盘输入的字符,用于键事件
keycode 从键盘为键事件输入的键的键代码(即Unicode)
keysym 从键盘输入的键的键符号(即字符),用于键事件。
num 按钮编号(1,2,3)表示单击了哪个鼠标按钮。
widge 触发此事件的widget对象
x and y 窗口小部件中当前的鼠标位置(以像素为单位)
x__root and y__root 当前鼠标相对于屏幕上左上角的位置,以像素为单位

事件绑定的公共操作

widget.bind(“”,callback) # 将widget组件绑定到鼠标左击
widget.bind(“”,callback) # 绑定到鼠标右击
widget.bind(“”,callback) # 绑定到Return(Enter)Key
widget.bind(“”,callback) # 绑定Focus
widget.bind(“”,callback) # 绑定键盘A键
widget.bind(“”,callback) #绑定CapsLockkeysym
widget.bind(“”,callback) # 绑定widget到F1
widget.bind(“”,callback) #绑定keypad 数字5
widget.bind(“Motion”,callback) #bind to motion over widget
widget.bind(“”,callback) #绑定到任意键

绑定的级别

application-level binding

application-level绑定的语法是
w.bind_all(event,callback)
典型的使用如下:
root.bind_all(‘’,show_help)

class-level binding

class level绑定的语法是
w.bind_class(className,event,callback)

典型的使用如下:
myentry.bind_class(‘Entry’,’’,paste)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/761012
推荐阅读
相关标签
  

闽ICP备14008679号