Tkinter教程之Event篇(3)

来源:互联网 发布:沁人缘总裁团 淘宝网 编辑:程序博客网 时间:2024/05/17 15:21
[python] view plain copy
  1. '''''Tkinter教程之Event篇(3)'''  
  2. '''''11.两个事件同时绑定到一个控件'''  
  3. # -*- coding: utf-8 -*-  
  4. # bind:将事件与处理函数  
  5. # 将两个事件绑定为同一个组件  
  6. # 为root绑定两个事件  
  7. from tkinter import *  
  8.   
  9. root = Tk()  
  10.   
  11.   
  12. # Key事件处理函数  
  13. def printEvent(event):  
  14.     print('<Key>', event.keycode)  
  15.   
  16.   
  17. # Return事件处理函数  
  18. def printReturn(event):  
  19.     print('<Return>', event.keycode)  
  20.   
  21.   
  22. root.bind('<Key>', printEvent)  
  23. root.bind('<Return>', printReturn)  
  24.   
  25. root.mainloop()  
  26. # 当按键除了Return之外,都是由printEvent来处理  
  27. # 当按键为Return时,由printReturn来处理,即由最“近”的那个事件处理。  

[python] view plain copy
  1. '''''12.为一个instance绑定一个事件。'''  
  2. # bind:绑定instance的事件处理函数  
  3. # -*- coding: utf-8 -*-  
  4. from tkinter import *  
  5.   
  6. root = Tk()  
  7.   
  8.   
  9. # Key事件处理函数  
  10. def printEvent(event):  
  11.     print('<Key>', event.keycode)  
  12.   
  13.   
  14. # 使用bt1来添加一个事件处理函数。  
  15. bt1 = Button(root, text='instance event')  
  16. bt1.bind('<Key>', printEvent)  
  17. bt1.focus_set()  
  18. bt1.grid()  
  19.   
  20. root.mainloop()  
  21. # 当按键时,程序调用一次printEvent  

[python] view plain copy
  1. '''''13.事件各个级别音传递'''  
  2. # -*- coding: utf-8 -*-  
  3. # bind:绑定instance与toplevel  
  4. # bind_class:绑定类处理函数  
  5. # bind_all:绑定应用所有事件  
  6. # 事件级别间”传递"  
  7. from tkinter import *  
  8.   
  9. root = Tk()  
  10.   
  11.   
  12. # Key事件处理函数  
  13. def printEvent(event):  
  14.     print('<instance>', event.keycode)  
  15.   
  16.   
  17. # Return事件处理函数  
  18. def printToplevel(event):  
  19.     print('<toplevel>', event.keycode)  
  20.   
  21.   
  22. def printClass(event):  
  23.     print('<bind_class>', event.keycode)  
  24.   
  25.   
  26. def printAppAll(event):  
  27.     print('<bind_all>', event.keycode)  
  28.   
  29.   
  30. # 在instance级别与printEvent绑定  
  31. bt1 = Button(root, text='instance event')  
  32. bt1.bind('<Return>', printEvent)  
  33.   
  34. # 在bt1的Toplevel级别与printToplevel绑定  
  35. bt1.winfo_toplevel().bind('<Return>', printToplevel)  
  36.   
  37. # 在class级别绑定事件printClass  
  38. root.bind_class('Button''<Return>', printClass)  
  39.   
  40. # 在application all级别绑定printAppAll  
  41. bt1.bind_all('<Return>', printAppAll)  
  42.   
  43. # 将焦点定位到bt1上,回车一下,结果有4个打印输出。  
  44. bt1.focus_set()  
  45. bt1.grid()  
  46.   
  47. root.mainloop()  
  48. # 输出结果:  
  49. # <instance> 13  
  50. # <bind_class> 13  
  51. # <toplevel> 13  
  52. # <bind_all> 13  
  53. # Return向高级别进行了“传递",调用顺序为instance/class/toplevel/all  

[python] view plain copy
  1. '''''14.使用bind_class的后果'''  
  2. # -*- coding: utf-8 -*-  
  3. # bind_class:绑定整个类的事件处理函数,将影响所有这个类的instance  
  4. from tkinter import *  
  5.   
  6. root = Tk()  
  7.   
  8.   
  9. def printClass(event):  
  10.     print('<bind_class>', event.keycode)  
  11.   
  12.   
  13. # 改变button类的事件绑定  
  14. root.bind_class('Button''<Return>', printClass)  
  15. # 创建两个Button  
  16. bt1 = Button(root, text='a button')  
  17. bt2 = Button(root, text='another button')  
  18.   
  19. bt1.focus_set()  
  20. bt1.grid()  
  21. bt2.grid()  
  22.   
  23. root.mainloop()  
  24. # 回车,bt1打印结果  
  25. # TAB切换到bt2,回车同样打印出结果,即所有的Button对Return事件进行响应。  

[python] view plain copy
  1. '''''15.使用protocal绑定'''  
  2. # -*- coding: utf-8 -*-  
  3. # protocol:与WM交互,绑定事件处理函数。  
  4. from tkinter import *  
  5.   
  6. root = Tk()  
  7.   
  8.   
  9. def printProtocol():  
  10.     print('WM_DELETE_WINDOW')  
  11.     root.destroy()  
  12.   
  13.   
  14. # 使用protocol将WM_DELETE_WINDOW与printProtocol绑定  
  15. root.protocol('WM_DELETE_WINDOW', printProtocol)  
  16. root.mainloop()  
  17. # 程序在退出时打印'WM_DELETE_WINDOW' 


转自:http://blog.csdn.net/aa1049372051/article/details/51890105