Tkinter教程之Event篇(3)

''' Tkinter教程之Event篇(3) '''
''' 11.两个事件同时绑定到一个控件 '''
#  -*- coding: cp936 -*-
#
 bind:将事件与处理函数
#
 将两个事件绑定为同一个组件
#
 为root绑定两个事件
from  Tkinter  import   *
root 
=  Tk()
#  Key事件处理函数
def  printEvent(event):
    
print   ' <Key> ' ,event.keycode
#  Return事件处理函数
def  printReturn(event):
    
print   ' <Return> ' ,event.keycode
root.bind(
' <Key> ' ,printEvent)
root.bind(
' <Return> ' ,printReturn)

root.mainloop()
#  当按键除了Return之外,都是由printEvent来处理
#
 当按键为Return时,由printReturn来处理,即由最“近”的那个事件处理。
''' 12.为一个instance绑定一个事件。 '''
#  bind:绑定instance的事件处理函数
#
 -*- coding: cp936 -*-
from  Tkinter  import   *
root 
=  Tk()
#  Key事件处理函数
def  printEvent(event):
    
print   ' <Key> ' ,event.keycode
#  Return事件处理函数
def  printReturn(event):
    
print   ' <Return> ' ,event.keycode
#  使用bt1来添加一个事件处理函数。
bt1  =  Button(root,text  =   ' instance event ' )
bt1.bind(
' <Key> ' ,printEvent)
bt1.focus_set()
bt1.grid()

root.mainloop()
#  当按键时,程序调用一次printEvent
''' 13.事件各个级别音传递 '''
#  -*- coding: cp936 -*-
#
 bind:绑定instance与toplevel
#
 bind_class:绑定类处理函数
#
 bind_all:绑定应用所有事件
#
 事件级别间”传递"
from  Tkinter  import   *
root 
=  Tk()
#  Key事件处理函数
def  printEvent(event):
    
print   ' <instance> ' ,event.keycode
#  Return事件处理函数
def  printToplevel(event):
    
print   ' <toplevel> ' ,event.keycode
def  printClass(event):
    
print   ' <bind_class> ' ,event.keycode
def  printAppAll(event):
    
print   ' <bind_all> ' ,event.keycode

#  在instance级别与printEvent绑定
bt1  =  Button(root,text  =   ' instance event ' )
bt1.bind(
' <Return> ' ,printEvent)

#  在bt1的Toplevel级别与printToplevel绑定
bt1.winfo_toplevel().bind( ' <Return> ' ,printToplevel)

#  在class级别绑定事件printClass
root.bind_class( ' Button ' , ' <Return> ' ,printClass)

#  在application all级别绑定printAppAll
bt1.bind_all( ' <Return> ' ,printAppAll)

#  将焦点定位到bt1上,回车一下,结果有4个打印输出。
bt1.focus_set()
bt1.grid()

root.mainloop()
#  输出结果:
#
 <instance> 13
#
 <bind_class> 13
#
 <toplevel> 13
#
 <bind_all> 13
#
 Return向高级别进行了“传递",调用顺序为instance/class/toplevel/all
''' 14.使用bind_class的后果 '''
#  -*- coding: cp936 -*-
#
 bind_class:绑定整个类的事件处理函数,将影响所有这个类的instance
from  Tkinter  import   *
root 
=  Tk()

def  printClass(event):
    
print   ' <bind_class> ' ,event.keycode

#  改变button类的事件绑定
root.bind_class( ' Button ' , ' <Return> ' ,printClass)
#  创建两个Button
bt1  =  Button(root,text  =   ' a button ' )
bt2 
=  Button(root,text  =   ' another button ' )

bt1.focus_set()
bt1.grid()
bt2.grid()

root.mainloop()
#  回车,bt1打印结果
#
 TAB切换到bt2,回车同样打印出结果,即所有的Button对Return事件进行响应。
''' 15.使用protocal绑定 '''
#  -*- coding: cp936 -*-
#
 protocol:与WM交互,绑定事件处理函数。
from  Tkinter  import   *
root 
=  Tk()

def  printProtocol():
    
print   ' WM_DELETE_WINDOW '
    root.destroy()

#  使用protocol将WM_DELETE_WINDOW与printProtocol绑定
root.protocol( ' WM_DELETE_WINDOW ' ,printProtocol)
root.mainloop()
#  程序在退出时打印'WM_DELETE_WINDOW'
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值