zoukankan      html  css  js  c++  java
  • 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'

  • 相关阅读:
    django url路由
    web 协议
    动画效果 each循环
    页面载入
    js 事件 事件委托
    jQuery 文档操作
    jQuery 标签操作 样式操作
    筛选器方法
    jQuery 介绍
    js操作属性 类操作 事件
  • 原文地址:https://www.cnblogs.com/LeeZz/p/3984350.html
Copyright © 2011-2022 走看看