- '''''Tkinter教程之Event篇(3)'''
- '''''11.两个事件同时绑定到一个控件'''
- # -*- coding: utf-8 -*-
- # 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: utf-8 -*-
- from tkinter import *
- root = Tk()
- # Key事件处理函数
- def printEvent(event):
- print('<Key>', event.keycode)
- # 使用bt1来添加一个事件处理函数。
- bt1 = Button(root, text='instance event')
- bt1.bind('<Key>', printEvent)
- bt1.focus_set()
- bt1.grid()
- root.mainloop()
- # 当按键时,程序调用一次printEvent
- '''''13.事件各个级别音传递'''
- # -*- coding: utf-8 -*-
- # 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: utf-8 -*-
- # 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: utf-8 -*-
- # 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'
转自:http://blog.csdn.net/aa1049372051/article/details/51890105