python函数调用键盘热键_Tkinter对键盘和鼠标事件的处理
所謂event事件就是程序上發生的事。例如用戶敲擊鍵盤上的某一個鍵或是點擊移動鼠標。而對于這些事件,程序需要做出反應。
Tkinter提供的組件通常都包含許多內在行為,例如當按鈕被點擊時執行特定操作或是當一個輸入欄成為焦點,而您又敲擊了鍵盤上的某些按鍵,您所輸入的內容就會顯示在輸入欄內。
不過,Tkinter的事件處理允許您創建、修改或是刪除這些行為。
首先給出如下定義:
事件處理者:程序中在當事件發生時被調用的某個函數。
當您為您的程序建立一個處理某一事件的事件處理者,稱之為綁定。
綁定級別:
三個級別:
實例綁定:將事件與一特定的組件實例綁定。例如您可以將按下PageUp按鍵這一事件與一個Canvas組件實例綁定,來處理Canvas的翻頁。調用組件實例的.bind()函數為組件實例綁定事件。例如,假設您聲明了一個名為canvas的Canvas組件對象。您想在canvas上,當按下鼠標中鍵時畫上一條線。您可以這樣實現:canvas.bind(“”, drawline)
其中bind函數的第一個參數是事件描述符,他指定無論什么時候在canvas上,當按下鼠標中鍵時就調用事件處理函數drawline進行畫線的任務。特別的是:drawline后面的圓括號是省略的。Tkinter會將此函數填入相關參數后調用運行。在這里只是連結性聲明而以。
類綁定:將事件與一組件類綁定。例如您可以綁定按鈕組件類,使得所有按鈕實例都可以處理鼠標中鍵事件作相應的操作。調用任意組件實例的.bind_class()函數為特定組件類綁定事件。例如,假設您聲明了若干個Canvas組件對象。您想在這些對象上,當按下鼠標中鍵時都能畫上一條線。您可以這樣實現:widget.bind_class(“Canvas”, “”, drawline)
其中widget是任意組件對象。
程序界面綁定:當無論在哪一組件實例上觸發某一事件,程序都作出相應的處理。例如您可能會將PrintScreen鍵與程序中的所有組件對象綁定,這樣的話整個程序界面就能處理打印屏幕的事件了。調用任意組件實例的.bind_all()函數為程序界面綁定事件。例如您可以這樣實現打印屏幕:widget.bind_all( “”,printScreen)。
事件隊列:
Tkinter為您定義正確的事件提供了強大的通用方式。一般來說,事件隊列是包含了一個或多個事件類型的字符串。每一個事件類型指定了一項事件,當有多項事件類型包含于事件隊列中,當且僅當描述符中全部事件發生時才調用處理函數。
事件類型的通用格式:
事件類型必須放置于尖括號<>內。type描述了通用類型,例如鍵盤按鍵、鼠標點擊。
modifier用于組合鍵定義,例如Control、Alt。detail用于明確定義是哪一個鍵或按鈕的事件,例如1表示鼠標左鍵、2表示鼠標中鍵。
舉例:按下鼠標左鍵。
按下鍵盤上的A鍵
同時按下了Control、Shift、A三鍵。
事件類型:
鍵盤事件:
名 稱
描 述
KeyPress
按下鍵盤某鍵時觸發,可以在detail部分指定是哪個鍵。
KeyRelease
按下鍵盤某鍵時觸發,可以在detail部分指定是哪個鍵。
鼠標事件:
名 稱
描 述
ButtonPress
按下鼠標某鍵,可以在detail部分指定是哪個鍵。
ButtonRelease
釋放鼠標某鍵,可以在detail部分指定是哪個鍵。
Motion
點中組件的同時托拽組件移動時觸發。
Enter
當鼠標指針移進某組件時,該組件觸發。
Leave
當鼠標指針移出某組件時,該組件觸發。
MouseWheel
當鼠標滾輪滾動時觸發。
窗體事件:
名 稱
描 述
Visibility
當組件變為可視狀態時觸發。
Unmap
當組件由顯示狀態變為隱藏狀態時觸發。
Map
當組件由隱藏狀態變為顯示狀態時觸發。
Expose
當組件從原本被其他組件遮蓋的狀態中暴露出來時觸發。
FocusIn
組件獲得焦點時觸發。
FocusOut
組件失去焦點時觸發。
Circulate
當窗體由于系統協議要求在堆棧中置頂或壓底時觸發,Tk中忽略此細節。
Colormap
當窗體的顏色或外貌改變時觸發,Tk中忽略此細節。
Gravity
Tk中忽略此細節。
Reparent
Tk中忽略此細節。
Configure
當改變組件大小時觸發。例如托拽窗體邊緣。
Property
當窗體的屬性被刪除或改變時觸發,屬于Tk的核心事件。不于窗體相關聯。
Destroy
當組件被銷毀時觸發。
Activate
與組件選項中的state項有關,表示組件由不可用轉為可用。例如按鈕由disabled(灰色)轉為enabled。
Deactivate
與組件選項中的state項有關,表示組件由可用轉為不可用。例如按鈕由enabled轉為disabled(灰色)。
事件前綴:
名 稱
描 述
Alt
當Alt鍵按下
Any
任何按鍵按下,例如
Control
Control鍵按下
Double
兩個事件在短時間內發生,例如雙擊鼠標左鍵
Lock
當Caps Lock鍵按下
Shift
當Shift鍵按下
Triple
類似于Double,三個事件短時間內發生。
你可以短格式表示事件,例如:<1>等同于、等同于
對于大多數的單字符按鍵,你還可以忽略“<>”符號。但是空格鍵和尖括號鍵不能這樣做(正確的表示分別為、)
按鍵名:
通用格式中的detail部分描述的是KeyPress事件和KeyRelease事件類型中特指的按鍵。下表描述了采用若干種不同的方式來命名按鍵。
.keysym列用字符串命名了按鍵,它可以從Event事件對象中的keysym屬性中獲得。
.keycode列用按鍵碼命名了按鍵,但是它不能反映事件前綴:Alt、Control、Shift、Lock,并且它不區分大小寫寫按鍵,即輸入a和A是相同的鍵碼。
.keysym_num列用數字代碼命名了按鍵。
Key列描述了鍵盤上的按鍵名,方便一一對應。
列表以美式101鍵盤為例:
.keysym
.keycode
.keysym_num
Key
Alt_L
64
65513
左手邊的Alt鍵
Alt_R
113
65514
右手邊的Alt鍵
BackSpace
22
65288
BackSpace
Cancel
110
65387
Pause Break
總結
以上是生活随笔為你收集整理的python函数调用键盘热键_Tkinter对键盘和鼠标事件的处理的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: python清洗数据去除停用词_Pyth
- 下一篇: .实现 linkedlist 类java
