Tkinter 之事件綁定

import tkinter as tk

window = tk.Tk()
# 設置窗口大小
winWidth = 600
winHeight = 400
# 獲取屏幕分辨率
screenWidth = window.winfo_screenwidth()
screenHeight = window.winfo_screenheight()

x = int((screenWidth - winWidth) / 2)
y = int((screenHeight - winHeight) / 2)

# 設置主窗口標題
window.title("綁定事件參數說明")
# 設置窗口初始位置在屏幕居中
window.geometry("%sx%s+%s+%s" % (winWidth, winHeight, x, y))
# 設置窗口圖標
window.iconbitmap("./image/icon.ico")
# 設置窗口寬高固定
window.resizable(0, 0)

def callBack(event):
    print("button is click")
btn = tk.Button(window, text="點擊")
btn.bind("<Button-1>", callBack)
btn.pack()

def windowBack(event):
    print(event.char)
window.bind("<Key>", windowBack)

window.mainloop()

  

1、事件序列python

事件序列是以字符串的形式表示的,能夠表示一個或多個相關聯的事件。ide

事件序列使用如下語法描述:oop

<modifier-type-detail>spa

    • 事件序列是包含在尖括號(<...>)中
    • type 部分的內容是最重要的,它一般用於描述普通的事件類型,例如鼠標點擊或鍵盤按鍵點擊(詳見下方)。
    • modifier 部分的內容是可選的,它一般用於描述組合鍵,例如 Ctrl + c,Shift + 鼠標左鍵點擊(詳見下方)。
    • detail 部分的內容是可選的,它一般用於描述具體的按鍵,例如 Button-1 表示鼠標左鍵。
事件序列 含義 序列
<Button-1> 用戶點擊鼠標左鍵 detail
<KeyPress-H> 用戶點擊 H 按鍵  
<Control-Shift-KeyPress-H> 用戶同時點擊 Ctrl + Shift + H

2、type指針

Activate  當組件的狀態從「未激活」變爲「激活」的時候觸發該事件
Button  1. 當用戶點擊鼠標按鍵的時候觸發該事件
2. detail 部分指定具體哪一個按鍵:<Button-1>鼠標左鍵,<Button-2>鼠標中鍵,<Button-3>鼠標右鍵,<Button-4>滾輪上滾(Linux),<Button-5>滾輪下滾(Linux)
ButtonRelease  1. 當用戶釋放鼠標按鍵的時候觸發該事
2. 在大多數狀況下,比 Button 要更好用,由於若是當用戶不當心按下鼠標,用戶能夠將鼠標移出組件再釋放鼠標,從而避免不當心觸發事件
Configure  當組件的尺寸發生改變的時候觸發該事件
Deactivate  當組件的狀態從「激活」變爲「未激活」的時候觸發該事件
Destroy  當組件被銷燬的時候觸發該事件
Enter  1. 當鼠標指針進入組件的時候觸發該事件
2. 注意:不是指用戶按下回車鍵
Expose  當窗口或組件的某部分再也不被覆蓋的時候觸發該事件
FocusIn  1. 當組件得到焦點的時候觸發該事件
2. 用戶能夠用 Tab 鍵將焦點轉移到該組件上(須要該組件的 takefocus 選項爲 True)
3. 你也能夠調用 focus_set() 方法使該組件得到焦點
FocusOut  當組件失去焦點的時候觸發該事件
KeyPress  1. 當用戶按下鍵盤按鍵的時候觸發該事件
2. detail 能夠指定具體的按鍵,例如 <KeyPress-H>表示當大寫字母 H 被按下的時候觸發該事件
3. KeyPress 能夠簡寫爲 Key
KeyRelease  當用戶釋放鍵盤按鍵的時候觸發該事件
Leave  當鼠標指針離開組件的時候觸發該事件
Map  1. 當組件被映射的時候觸發該事件
2. 意思是在應用程序中顯示該組件的時候,例如調用 grid() 方法
Motion  當鼠標在組件內移動的整個過程均觸發該事件
MouseWheel  1. 當鼠標滾輪滾動的時候觸發該事件
2. 目前該事件僅支持 Windows 和 Mac 系統,Linux 系統請參考 Button
Unmap  1. 當組件被取消映射的時候觸發該事件
2. 意思是在應用程序中再也不顯示該組件的時候,例如調用 grid_remove() 方法
Visibility  當應用程序至少有一部分在屏幕中是可見的時候觸發該事件

3、modifiercode

Alt 當按下 Alt 按鍵的時候
Any  1. 表示任何類型的按鍵被按下的時候
2. 例如 <Any-KeyPress> 表示當用戶按下任何按鍵時觸發事件
Control  當按下 Ctrl 按鍵的時候
Double  1. 當後續兩個事件被連續觸發的時候
2. 例如 <Double-Button-1> 表示當用戶雙擊鼠標左鍵時觸發事件
Lock   當打開大寫字母鎖定鍵(CapsLock)的時候
Shift  當按下 Shift 按鍵的時候
Triple  跟 Double 相似,當後續三個事件被連續觸發的時候

 4、Event 對象對象

widget  產生該事件的組件
x, y 當前的鼠標位置座標(相對於窗口左上角,像素爲單位)
x_root, y_root  當前的鼠標位置座標(相對於屏幕左上角,像素爲單位)
keysym    按鍵名,見下方 Key names(鍵盤事件專屬)
keycode  按鍵碼,見下方 Key names(鍵盤事件專屬)
num  按鈕數字(鼠標事件專屬)
width, height 組件的新尺寸(Configure 事件專屬)

type  該事件類型

5、Key namesblog

按鍵名(keysym) 按鍵碼(keycode) 表明的按鍵
Alt_L 64 左邊的 Alt 按鍵
Alt_R 113 右邊的 Alt 按鍵
BackSpace 22 Backspace(退格)按鍵
Cancel 110 break 按鍵
Caps_Lock 66 CapsLock(大寫字母鎖定)按鍵
Control_L 37 左邊的 Ctrl 按鍵
Control_R 109 右邊的 Ctrl 按鍵
Delete 107 Delete 按鍵
Down 104 ↓ 按鍵
End 103 End 按鍵
Escape 9 Esc 按鍵
Execute 111 SysReq 按鍵
F1 67 F1 按鍵
F2 68 F2 按鍵
F3 69 F3 按鍵
F4 70 F4 按鍵
F5 71 F5 按鍵
F6 72 F6 按鍵
F7 73 F7 按鍵
F8 74 F8 按鍵
F9 75 F9 按鍵
F10 76 F10 按鍵
F11 77 F11 按鍵
F12 96 F12 按鍵
Home 97 Home 按鍵
Insert 106 Insert 按鍵
Left 100 ← 按鍵
Linefeed 54 Linefeed(Ctrl + J)
KP_0 90 小鍵盤數字 0
KP_1 87 小鍵盤數字 1
KP_2 88 小鍵盤數字 2
KP_3 89 小鍵盤數字 3
KP_4 83 小鍵盤數字 4
KP_5 84 小鍵盤數字 5
KP_6 85 小鍵盤數字 6
KP_7 79 小鍵盤數字 7
KP_8 80 小鍵盤數字 8
KP_9 81 小鍵盤數字 9
KP_Add 86 小鍵盤的 + 按鍵
KP_Begin 84 小鍵盤的中間按鍵(5)
KP_Decimal 91 小鍵盤的點按鍵(.)
KP_Delete 91 小鍵盤的刪除鍵
KP_Divide 112 小鍵盤的 / 按鍵
KP_Down 88 小鍵盤的 ↓ 按鍵
KP_End 87 小鍵盤的 End 按鍵
KP_Enter 108 小鍵盤的 Enter 按鍵
KP_Home 79 小鍵盤的 Home 按鍵
KP_Insert 90 小鍵盤的 Insert 按鍵
KP_Left 83 小鍵盤的 ← 按鍵
KP_Multiply 63 小鍵盤的 * 按鍵
KP_Next 89 小鍵盤的 PageDown 按鍵
KP_Prior 81 小鍵盤的 PageUp 按鍵
KP_Right 85 小鍵盤的 → 按鍵
KP_Subtract 82 小鍵盤的 - 按鍵
KP_Up 80 小鍵盤的 ↑ 按鍵
Next 105 PageDown 按鍵
Num_Lock 77 NumLock(數字鎖定)按鍵
Pause 110 Pause(暫停)按鍵
Print 111 PrintScrn(打印屏幕)按鍵
Prior 99 PageUp 按鍵
Return 36 Enter(回車)按鍵
Right 102 → 按鍵
Scroll_Lock 78 ScrollLock 按鍵
Shift_L 50 左邊的 Shift 按鍵
Shift_R 62 右邊的 Shift 按鍵
Tab 23 Tab(製表)按鍵
Up 98 ↑ 按鍵
相關文章
相關標籤/搜索