参考资料(官网文档):http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm
# python中的事件的属性有:
#(1)widget 事件发生的部件(也就是地点)
#(2)x, y 事件的位置(相对于控件来说的相对坐标)
#(3)x_root, y_root 事件的位置(相对于屏幕的左上角的坐标绝对坐标)
#(4)keysym 按键事件的值(如按下f则这个事件的keysym就是f)
#(5)keycode 事件对象的数字码(如按下f的数字码是70,注意大写的F的数字码也是70,从这里可以使用keycode对大小写的F进行监听)
#(6)type 事件的一个类型(例如:键盘为2,鼠标点击为4,鼠标移动为6)
#(7)char 按钮事件的一个字符代码(例如f键盘为’f‘)
#(8)num 鼠标点击的事件数字码(左鼠标点击为1,中间鼠标为2,右边是鼠标为3)
#(9)width, height (新的部件的大小,在下面的例子中可能你看到的打印是??,因为没有新的部件的产生)
测试代码示例:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : SundayCoder-俊勇
# @File : eventthing.py
from Tkinter import *
root = Tk()
def key(event):
print "pressed at widget%s" % event.widget
print "pressed", repr(event.char)
print "event.type is %s"%event.type
# 按下键盘上的f键的时候执行的事件
# (注意大写的F与小写的f他们的事件监听是不一样的,这里监听是小写的f)
print event.keycode
# 按下键盘上的f键的时候执行的事件
if event.keysym=='f':
print "hello world %s"%repr(event.char)
# 这里可以使用keycode对大小写的F进行监听
if event.keycode==70:
print "这里可以使用keycode对大小写的F进行监听"
def callback(event):
frame.focus_set()
print "num is %s"% event.num
print "width is %s, height is %s"%(event.width,event.height)
print "clicked at widget%s"% event.widget, event.x, event.y,"root_x,root_y",event.x_root,event.y_root,event.type
def sayhello(event):
print "hello world"
frame = Frame(root, width=100, height=100)
frame.bind("<Key>", key)
#button-1是鼠标左键按下,以此类推
#B1-Motion是鼠标左键移动,以此类推
frame.bind("<Button-1>", callback)
frame.bind("<Button-2>", callback)
frame.bind("<Button-3>", callback)
frame.bind("<B1-Motion>", callback)
frame.bind("<B2-Motion>", callback)
frame.bind("<B3-Motion>", callback)
# 注意这里的<Enter>事件不是键盘按下Enter而是鼠标进入到控件时候的事件,相当于java的获得焦点的事件监听
frame.bind("<Enter>",sayhello)
frame.pack()
root.mainloop()
测试部分的运行结果:
如果有任何疑问,可以自己测试一下上面的代码行!!!