一個(gè) Tkinter 應(yīng)用生命周期中的大部分時(shí)間都處在一個(gè)消息循環(huán) (event loop) 中. 它等待事件的發(fā)生: 事件可能是 按鍵按下, 鼠標(biāo)點(diǎn)擊, 鼠標(biāo)移動(dòng) 等. Tkinter 提供了用以處理相關(guān)事件的機(jī)制. 處理函數(shù)可以被綁定給各個(gè)控件的各種事件. widget.bind(event, handler) 如果相關(guān)事件發(fā)生, handler 函數(shù)會(huì)被觸發(fā), 事件對(duì)象 event 會(huì)傳遞給 handler 函數(shù).
Tkinter 使用所謂的 事件隊(duì)列 (event sequences) 暴露接口以綁定 handler 到相關(guān)事件. 事件以字符串的形式給出:
<modifier-type-detail>type 字段是一個(gè)事件的關(guān)鍵字段. modifer 和 detail 字段則不是必要字段, 很多情況下這兩個(gè)字段都不會(huì)被賦值. 這兩個(gè)字段用以提供 type 所代表的事件的附加信息. type 字段描述事件種類, 比如 鼠標(biāo)點(diǎn)擊, 鍵位按下, 控件獲得焦點(diǎn) 等.
| Event | Description |
|---|---|
| <Button> | 某個(gè)鼠標(biāo)按鍵在控件上被點(diǎn)擊. detail 指定了哪一個(gè)按鍵被點(diǎn)擊了, 比如, 鼠標(biāo)左鍵點(diǎn)擊為 <Button-1>, 鼠標(biāo)中鍵點(diǎn)擊為 <Button-2>, 鼠標(biāo)右鍵點(diǎn)擊為 <Button-3>, 向上滾動(dòng)滑輪為 <Button-4>, 向下滾動(dòng)滑輪為 <Button-5>. 如果在控件上按下鼠標(biāo)的某個(gè)鍵并保持按下, Tkinter 將”抓住”該事件. 之后的鼠標(biāo)事件, 比如 鼠標(biāo)移動(dòng) 或 鼠標(biāo)按鍵釋放 事件, 會(huì)被自動(dòng)發(fā)送給該控件處理, 即使鼠標(biāo)移動(dòng)出該控件時(shí)依然如此. 鼠標(biāo)相對(duì)當(dāng)前控件的位置會(huì)被存儲(chǔ)在 event 對(duì)象中的 x 和 y 字段中傳遞給回調(diào)函數(shù). |
| <Motion> | 鼠標(biāo)在某個(gè)按鍵被按下時(shí)的移動(dòng)事件. 鼠標(biāo)左鍵點(diǎn)擊為 <B1-Motion>, 鼠標(biāo)中鍵點(diǎn)擊為 <B2-Motion>, 鼠標(biāo)右鍵點(diǎn)擊為 <B3-Motion>. 鼠標(biāo)相對(duì)當(dāng)前控件的位置會(huì)被存儲(chǔ)在 event 對(duì)象中的 x 和 y 字段中傳遞給回調(diào)函數(shù). |
| <ButtonRelease> | 按鈕點(diǎn)擊釋放事件. 鼠標(biāo)左鍵點(diǎn)擊為 <ButtonRelease-1>, 鼠標(biāo)中鍵點(diǎn)擊為 <ButtonRelease-2>, 鼠標(biāo)右鍵點(diǎn)擊為 <ButtonRelease-3>. 鼠標(biāo)相對(duì)當(dāng)前控件的位置會(huì)被存儲(chǔ)在 event 對(duì)象中的 x 和 y 字段中傳遞給回調(diào)函數(shù). |
| <Double-Button> | 鼠標(biāo)雙擊事件. 鼠標(biāo)左鍵點(diǎn)擊為 <Double-Button-1>, 鼠標(biāo)中鍵點(diǎn)擊為 <Double-Button-2>, 鼠標(biāo)右鍵點(diǎn)擊為 <Double-Button-3>. Double 和 Triple 都可以被用作前綴. 注意: 如果同時(shí)綁定單擊事件 (<Button-1>) 和雙擊事件 (<Double-Button-1>), 則兩個(gè)回調(diào)都會(huì)被調(diào)用. |
| <Enter> | 鼠標(biāo)移入控件事件. 注意: 這個(gè)事件不是 Enter 鍵按下事件, Enter 按下事件是 <Return>. |
| <Leave> | 鼠標(biāo)移出控件事件. |
| <FocusIn> | 控件或控件的子空間獲得鍵盤焦點(diǎn). |
| <FocusOut> | 控件丟失鍵盤焦點(diǎn) (焦點(diǎn)移動(dòng)到另一個(gè)控件). |
| <Return> | Enter 點(diǎn)擊事件. 鍵盤上的所有鍵位都可以被綁定. 特殊鍵位名稱包括 Cancel, BackSpace, Tab, Return (Enter), Shift_L (任意 Shift), Control_L (任意 Control), Alt_L (任意 Alt), Pause, Caps_Lock, Escape, Prior (Page Up), Next (Page Down), End, Home, Left, Up, Right, Down, Print, Insert, Delete, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, Num_Lock, and Scroll_Lock |
| <Key> | 鍵盤按鍵點(diǎn)擊事件. 鍵值被存儲(chǔ)在 event 對(duì)象中傳遞. (特殊鍵位會(huì)傳遞空鍵值). |
| a | “a” 鍵被點(diǎn)擊. 其他字符也可以如此定義. 特殊情況包括 空格 (<space>) 和 小于號(hào) (<less>). 注意 “1” 是綁定鍵盤鍵位, 而 <1> 則是按鈕綁定. |
| <Shift-Up> | 在 shift 被按下時(shí)點(diǎn)擊 up 鍵. 同樣的, 也有 Alt-Up, Control-Up 事件. |
| <Configure> | 控件大小改變事件. 新的控件大小會(huì)存儲(chǔ)在 event 對(duì)象中的 width 和 height 屬性傳遞. 有些平臺(tái)上該事件也可能代表控件位置改變. |
已獲作者授權(quán). 原文地址
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注