python中的事件属性详解

参考资料(官网文档):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()

测试部分的运行结果:
这里写图片描述

如果有任何疑问,可以自己测试一下上面的代码行!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值