• Tkinter教程之Event篇(3)


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

    '''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'

  • 相关阅读:
    IDEA热部署插件JRebel使用
    IntelliJ IDEA 代码注释
    解决redis显示中文为乱码问题
    C#的六种修饰符
    Bat批处理把文件夹包括子文件夹下面的某个文件复制到另一个目录下
    html不识别<br/>,后台返回<br/>,前端不换行解决办法
    C# Task的应用
    c# 生成json字符串和解析json字符串处理
    在 C# 中将 List<dynamic> 转换为 List<string>
    C#读取主从文件的excel并把结果为pass的文件打包
  • 原文地址:https://www.cnblogs.com/LeeZz/p/3984350.html
Copyright © 2020-2023  润新知