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