1. 程式人生 > >python中的事件屬性詳解

python中的事件屬性詳解

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)
#button-1是滑鼠左鍵按下,以此類推
#B1-Motion是滑鼠左鍵移動,以此類推
frame.bind("", callback)
frame.bind("", callback)
frame.bind("", callback)
frame.bind("", callback)
frame.bind("", callback)
frame.bind("", callback)

注意這裡的事件不是鍵盤按下Enter而是滑鼠進入到控制元件時候的事件,相當於java的獲得焦點的事件監聽

frame.bind("",sayhello)
frame.pack()

root.mainloop()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
測試部分的執行結果:
這裡寫圖片描述