国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

[Tkinter 教程15] event 事件綁定

2019-11-06 06:23:53
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

簡(jiǎn)介

一個(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ù).

#!/usr/bin/python3# write tkinter as Tkinter to be Python 2.x compatiblefrom tkinter import *def hello(event): 讓我們?cè)賹懸粋€(gè)例子, 用以處理上面提到的鼠標(biāo)在控件內(nèi)移動(dòng)的事件:

from tkinter import *def motion(event): print("Mouse position: (%s %s)" % (event.x, event.y)) returnmaster = Tk()whatever_you_do = "Whatever you do will be insignificant, but it is very important that you do it./n(Mahatma Gandhi)"msg = Message(master, text = whatever_you_do)msg.config(bg='lightgreen', font=('times', 24, 'italic'))msg.bind('<Motion>',motion)msg.pack()mainloop()

事件

Tkinter 使用所謂的 事件隊(duì)列 (event sequences) 暴露接口以綁定 handler 到相關(guān)事件. 事件以字符串的形式給出:

<modifier-type-detail>

type 字段是一個(gè)事件的關(guān)鍵字段. modiferdetail 字段則不是必要字段, 很多情況下這兩個(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). 原文地址


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 庆云县| 驻马店市| 昆山市| 五河县| 望江县| 六安市| 泾源县| 红河县| 通许县| 南充市| 青海省| 新建县| 安吉县| 诸暨市| 新闻| 米脂县| 平塘县| 奉贤区| 台北县| 衡南县| 泰州市| 太保市| 博爱县| 织金县| 沙田区| 鸡东县| 丰都县| 夏河县| 德阳市| 恩施市| 固始县| 旺苍县| 虎林市| 贵州省| 资源县| 谢通门县| 原平市| 柘荣县| 舒城县| 正蓝旗| 禄丰县|