Tkinter教程之Event篇(3)

时间:2023-12-06 12:41:56

本文转载自:http://blog.csdn.net/jcodeer/article/details/1823550

'''Tkinter教程之Event篇(3)'''
Tkinter教程之Event篇(3)'''11.两个事件同时绑定到一个控件'''
Tkinter教程之Event篇(3)# -*- coding: cp936 -*-
Tkinter教程之Event篇(3)# bind:将事件与处理函数
Tkinter教程之Event篇(3)# 将两个事件绑定为同一个组件
Tkinter教程之Event篇(3)# 为root绑定两个事件
Tkinter教程之Event篇(3)from Tkinter import *
Tkinter教程之Event篇(3)root = Tk()
Tkinter教程之Event篇(3)# Key事件处理函数
Tkinter教程之Event篇(3)def printEvent(event):
Tkinter教程之Event篇(3)    print '<Key>',event.keycode
Tkinter教程之Event篇(3)# Return事件处理函数
Tkinter教程之Event篇(3)def printReturn(event):
Tkinter教程之Event篇(3)    print '<Return>',event.keycode
Tkinter教程之Event篇(3)root.bind('<Key>',printEvent)
Tkinter教程之Event篇(3)root.bind('<Return>',printReturn)
Tkinter教程之Event篇(3)
Tkinter教程之Event篇(3)root.mainloop()
Tkinter教程之Event篇(3)# 当按键除了Return之外,都是由printEvent来处理
Tkinter教程之Event篇(3)# 当按键为Return时,由printReturn来处理,即由最“近”的那个事件处理。
Tkinter教程之Event篇(3)'''12.为一个instance绑定一个事件。'''
Tkinter教程之Event篇(3)# bind:绑定instance的事件处理函数
Tkinter教程之Event篇(3)# -*- coding: cp936 -*-
Tkinter教程之Event篇(3)from Tkinter import *
Tkinter教程之Event篇(3)root = Tk()
Tkinter教程之Event篇(3)# Key事件处理函数
Tkinter教程之Event篇(3)def printEvent(event):
Tkinter教程之Event篇(3)    print '<Key>',event.keycode
Tkinter教程之Event篇(3)# Return事件处理函数
Tkinter教程之Event篇(3)def printReturn(event):
Tkinter教程之Event篇(3)    print '<Return>',event.keycode
Tkinter教程之Event篇(3)# 使用bt1来添加一个事件处理函数。
Tkinter教程之Event篇(3)bt1 = Button(root,text = 'instance event')
Tkinter教程之Event篇(3)bt1.bind('<Key>',printEvent)
Tkinter教程之Event篇(3)bt1.focus_set()
Tkinter教程之Event篇(3)bt1.grid()
Tkinter教程之Event篇(3)
Tkinter教程之Event篇(3)root.mainloop()
Tkinter教程之Event篇(3)# 当按键时,程序调用一次printEvent
Tkinter教程之Event篇(3)'''13.事件各个级别音传递'''
Tkinter教程之Event篇(3)# -*- coding: cp936 -*-
Tkinter教程之Event篇(3)# bind:绑定instance与toplevel
Tkinter教程之Event篇(3)# bind_class:绑定类处理函数
Tkinter教程之Event篇(3)# bind_all:绑定应用所有事件
Tkinter教程之Event篇(3)# 事件级别间”传递"
Tkinter教程之Event篇(3)from Tkinter import *
Tkinter教程之Event篇(3)root = Tk()
Tkinter教程之Event篇(3)# Key事件处理函数
Tkinter教程之Event篇(3)def printEvent(event):
Tkinter教程之Event篇(3)    print '<instance>',event.keycode
Tkinter教程之Event篇(3)# Return事件处理函数
Tkinter教程之Event篇(3)def printToplevel(event):
Tkinter教程之Event篇(3)    print '<toplevel>',event.keycode
Tkinter教程之Event篇(3)def printClass(event):
Tkinter教程之Event篇(3)    print '<bind_class>',event.keycode
Tkinter教程之Event篇(3)def printAppAll(event):
Tkinter教程之Event篇(3)    print '<bind_all>',event.keycode
Tkinter教程之Event篇(3)
Tkinter教程之Event篇(3)# 在instance级别与printEvent绑定
Tkinter教程之Event篇(3)bt1 = Button(root,text = 'instance event')
Tkinter教程之Event篇(3)bt1.bind('<Return>',printEvent)
Tkinter教程之Event篇(3)
Tkinter教程之Event篇(3)# 在bt1的Toplevel级别与printToplevel绑定
Tkinter教程之Event篇(3)bt1.winfo_toplevel().bind('<Return>',printToplevel)
Tkinter教程之Event篇(3)
Tkinter教程之Event篇(3)# 在class级别绑定事件printClass
Tkinter教程之Event篇(3)root.bind_class('Button','<Return>',printClass)
Tkinter教程之Event篇(3)
Tkinter教程之Event篇(3)# 在application all级别绑定printAppAll
Tkinter教程之Event篇(3)bt1.bind_all('<Return>',printAppAll)
Tkinter教程之Event篇(3)
Tkinter教程之Event篇(3)# 将焦点定位到bt1上,回车一下,结果有4个打印输出。
Tkinter教程之Event篇(3)bt1.focus_set()
Tkinter教程之Event篇(3)bt1.grid()
Tkinter教程之Event篇(3)
Tkinter教程之Event篇(3)root.mainloop()
Tkinter教程之Event篇(3)# 输出结果:
Tkinter教程之Event篇(3)# <instance> 13
Tkinter教程之Event篇(3)# <bind_class> 13
Tkinter教程之Event篇(3)# <toplevel> 13
Tkinter教程之Event篇(3)# <bind_all> 13
Tkinter教程之Event篇(3)# Return向高级别进行了“传递",调用顺序为instance/class/toplevel/all
Tkinter教程之Event篇(3)'''14.使用bind_class的后果'''
Tkinter教程之Event篇(3)# -*- coding: cp936 -*-
Tkinter教程之Event篇(3)# bind_class:绑定整个类的事件处理函数,将影响所有这个类的instance
Tkinter教程之Event篇(3)from Tkinter import *
Tkinter教程之Event篇(3)root = Tk()
Tkinter教程之Event篇(3)
Tkinter教程之Event篇(3)def printClass(event):
Tkinter教程之Event篇(3)    print '<bind_class>',event.keycode
Tkinter教程之Event篇(3)
Tkinter教程之Event篇(3)# 改变button类的事件绑定
Tkinter教程之Event篇(3)root.bind_class('Button','<Return>',printClass)
Tkinter教程之Event篇(3)# 创建两个Button
Tkinter教程之Event篇(3)bt1 = Button(root,text = 'a button')
Tkinter教程之Event篇(3)bt2 = Button(root,text = 'another button')
Tkinter教程之Event篇(3)
Tkinter教程之Event篇(3)bt1.focus_set()
Tkinter教程之Event篇(3)bt1.grid()
Tkinter教程之Event篇(3)bt2.grid()
Tkinter教程之Event篇(3)
Tkinter教程之Event篇(3)root.mainloop()
Tkinter教程之Event篇(3)# 回车,bt1打印结果
Tkinter教程之Event篇(3)# TAB切换到bt2,回车同样打印出结果,即所有的Button对Return事件进行响应。
Tkinter教程之Event篇(3)'''15.使用protocal绑定'''
Tkinter教程之Event篇(3)# -*- coding: cp936 -*-
Tkinter教程之Event篇(3)# protocol:与WM交互,绑定事件处理函数。
Tkinter教程之Event篇(3)from Tkinter import *
Tkinter教程之Event篇(3)root = Tk()
Tkinter教程之Event篇(3)
Tkinter教程之Event篇(3)def printProtocol():
Tkinter教程之Event篇(3)    print 'WM_DELETE_WINDOW'
Tkinter教程之Event篇(3)    root.destroy()
Tkinter教程之Event篇(3)
Tkinter教程之Event篇(3)# 使用protocol将WM_DELETE_WINDOW与printProtocol绑定
Tkinter教程之Event篇(3)root.protocol('WM_DELETE_WINDOW',printProtocol)
Tkinter教程之Event篇(3)root.mainloop()
Tkinter教程之Event篇(3)# 程序在退出时打印'WM_DELETE_WINDOW'