python tkinter教程-事件绑定_Python 3 Tkinter教程之事件Event绑定处理代码实例

1.两个事件同时绑定到一个控件# 将两个事件绑定为同一个组件

# -*- coding: cp936 -*-

# 为root绑定两个事件

from Tkinter import *

root = Tk()

# Key事件处理函数

def printEvent(event):

print '',event.keycode

# Return事件处理函数

def printReturn(event):

print '',event.keycode

root.bind('',printEvent)

root.bind('',printReturn)

root.mainloop()

# 当按键除了Return之外,都是由printEvent来处理

# 当按键为Return时,由printReturn来处理,即由最“近”的那个事件处理。

2.为一个instance绑定一个事件。# instance的bind方法

# -*- coding: cp936 -*-

from Tkinter import *

root = Tk()

# Key事件处理函数

def printEvent(event):

print '',event.keycode

# Return事件处理函数

def printReturn(event):

print '',event.keycode

# 使用bt1来添加一个事件处理函数。

bt1 = Button(root,text = 'instance event')

bt1.bind('',printEvent)

bt1.focus_set()

bt1.grid()

root.mainloop()

# 当按键时,程序调用一次printEvent

3.事件各个级别音传递#--------------------------------------------------

''''''

# -*- coding: cp936 -*-

# 事件级别间”传递"

from Tkinter import *

root = Tk()

# Key事件处理函数

def printEvent(event):

print '',event.keycode

# Return事件处理函数

def printToplevel(event):

print '',event.keycode

def printClass(event):

print '',event.keycode

def printAppAll(event):

print '',event.keycode

# 在instance级别与printEvent绑定

bt1 = Button(root,text = 'instance event')

bt1.bind('',printEvent)

# 在bt1的Toplevel级别与printToplevel绑定

bt1.winfo_toplevel().bind('',printToplevel)

# 在class级别绑定事件printClass

root.bind_class('Button','',printClass)

# 在application all级别绑定printAppAll

bt1.bind_all('',printAppAll)

# 将焦点定位到bt1上,回车一下,结果有4个打印输出。

bt1.focus_set()

bt1.grid()

root.mainloop()

# 输出结果:

# 13

# 13

# 13

# 13

# Return向高级别进行了“传递",调用顺序为instance/class/toplevel/all#--------------------------------------------------

''''''

# -*- coding: cp936 -*-

# 使用bind_class将影响所有这个类的instance

from Tkinter import *

root = Tk()

def printClass(event):

print '',event.keycode

# 改变button类的事件绑定

root.bind_class('Button','',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事件进行响应。#--------------------------------------------------

''''''

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值