摘要:已獲原作者授權原系列地址簡介一個應用生命周期中的大部分時間都處在一個消息循環中它等待事件的發生事件可能是按鍵按下鼠標點擊鼠標移動等提供了用以處理相關事件的機制處理函數可以被綁定給各個控件的各種事件如果相關事件發生函數會被觸發事件對象會傳遞給
已獲原作者授權. 原系列地址: Python Tkinter簡介
一個 Tkinter 應用生命周期中的大部分時間都處在一個消息循環 (event loop) 中. 它等待事件的發生: 事件可能是 按鍵按下, 鼠標點擊, 鼠標移動 等.
Tkinter 提供了用以處理相關事件的機制. 處理函數可以被綁定給各個控件的各種事件.
widget.bind(event, handler)
如果相關事件發生, handler 函數會被觸發, 事件對象 event 會傳遞給 handler 函數.
#!/usr/bin/python3 # write tkinter as Tkinter to be Python 2.x compatible from tkinter import * def hello(event): print("Single Click, Button-l") def quit(event): print("Double Click, so let"s stop") import sys; sys.exit() widget = Button(None, text="Mouse Clicks") widget.pack() widget.bind("Button-1", hello) widget.bind("Double-1", quit) widget.mainloop()
讓我們再寫一個例子, 用以處理上面提到的鼠標在控件內移動的事件:
from tkinter import * def motion(event): print("Mouse position: (%s %s)" % (event.x, event.y)) return master = Tk() whatever_you_do = "Whatever you do will be insignificant, but it is very important that you do it. (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 使用所謂的 事件隊列 (event sequences) 暴露接口以綁定 handler 到相關事件. 事件以字符串的形式給出:
modifier-type-detail
type 字段是一個事件的關鍵字段. modifer 和 detail 字段則不是必要字段, 很多情況下這兩個字段都不會被賦值. 這兩個字段用以提供 type 所代表的事件的附加信息. type 字段描述事件種類, 比如 鼠標點擊, 鍵位按下, 控件獲得焦點 等.
Event | Description |
---|---|
Button | 某個鼠標按鍵在控件上被點擊. detail 指定了哪一個按鍵被點擊了, 比如, 鼠標左鍵點擊為 Button-1, 鼠標中鍵點擊為 Button-2, 鼠標右鍵點擊為 Button-3, 向上滾動滑輪為 Button-4, 向下滾動滑輪為 Button-5. 如果在控件上按下鼠標的某個鍵并保持按下, Tkinter 將"抓住"該事件. 之后的鼠標事件, 比如 鼠標移動 或 鼠標按鍵釋放 事件, 會被自動發送給該控件處理, 即使鼠標移動出該控件時依然如此. 鼠標相對當前控件的位置會被存儲在 event 對象中的 x 和 y 字段中傳遞給回調函數. |
Motion | 鼠標在某個按鍵被按下時的移動事件. 鼠標左鍵點擊為 B1-Motion, 鼠標中鍵點擊為 B2-Motion, 鼠標右鍵點擊為 B3-Motion. 鼠標相對當前控件的位置會被存儲在 event 對象中的 x 和 y 字段中傳遞給回調函數. |
ButtonRelease | 按鈕點擊釋放事件. 鼠標左鍵點擊為 ButtonRelease-1, 鼠標中鍵點擊為 ButtonRelease-2, 鼠標右鍵點擊為 ButtonRelease-3. 鼠標相對當前控件的位置會被存儲在 event 對象中的 x 和 y 字段中傳遞給回調函數. |
Double-Button | 鼠標雙擊事件. 鼠標左鍵點擊為 Double-Button-1, 鼠標中鍵點擊為 Double-Button-2, 鼠標右鍵點擊為 Double-Button-3. Double 和 Triple 都可以被用作前綴. 注意: 如果同時綁定單擊事件 (Button-1) 和雙擊事件 (Double-Button-1), 則兩個回調都會被調用. |
Enter | 鼠標移入控件事件. 注意: 這個事件不是 Enter 鍵按下事件, Enter 按下事件是 Return. |
Leave | 鼠標移出控件事件. |
FocusIn | 控件或控件的子空間獲得鍵盤焦點. |
FocusOut | 控件丟失鍵盤焦點 (焦點移動到另一個控件). |
Return | Enter 點擊事件. 鍵盤上的所有鍵位都可以被綁定. 特殊鍵位名稱包括 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 | 鍵盤按鍵點擊事件. 鍵值被存儲在 event 對象中傳遞. (特殊鍵位會傳遞空鍵值). |
a | "a" 鍵被點擊. 其他字符也可以如此定義. 特殊情況包括 空格 (space) 和 小于號 (less). 注意 "1" 是綁定鍵盤鍵位, 而 1 則是按鈕綁定. |
Shift-Up | 在 shift 被按下時點擊 up 鍵. 同樣的, 也有 Alt-Up, Control-Up 事件. |
Configure | 控件大小改變事件. 新的控件大小會存儲在 event 對象中的 width 和 height 屬性傳遞. 有些平臺上該事件也可能代表控件位置改變. |
全系列:
[譯][Tkinter 教程01] 入門: Label 控件
[譯][Tkinter 教程02] Message 控件
[譯][Tkinter 教程03] Button 控件
[譯][Tkinter 教程04] Variable 類
[譯][Tinkter 教程05] Radiobutton 控件
[譯][Tkinter 教程06] Checkbox 控件
[譯][Tkinter 教程07] Entry 控件
[譯][Tkinter 教程08] Canvas 圖形繪制
[譯][Tkinter 教程09] Scale 控件
[譯][Tkinter 教程10] Text 控件
[譯][Tkinter 教程11] 對話框和消息框
[譯][Tkinter 教程12] 布局管理 (Pack Place Grid)
[譯][Tkinter 教程13] Mastermind 游戲
[譯][Tkinter 教程14] menu 菜單
[譯][Tkinter 教程15] event 事件綁定
譯者水平有限, 如有疏漏, 歡迎指正.
已獲得原作者授權. 原文地址: Events and Binds
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41504.html
摘要:已獲原作者授權原系列地址類有些控件比如控件控件等可以通過傳入特定參數直接和一個程序變量綁定這些參數包括這種綁定是雙向的如果該變量發生改變與該變量綁定的控件也會隨之更新這些控制變量和一般的變量一樣都是用來保存某個值的但一般的變量不能被傳遞給或 已獲原作者授權. 原系列地址: Python Tkinter Variable 類 有些控件 (比如 Entry 控件, Radiobutton...
摘要:已獲原作者授權原系列地址簡介控件是一種標準控件用來展現不同樣式的按鈕控件被用以和用戶交互比如按鈕被鼠標點擊后某種操作被啟動和控件類似按鈕可以展示圖片或者文字不同的是控件可以指定字體控件只能使用單一的字體上的文字可以多行顯示可以將一個函數或方 已獲原作者授權. 原系列地址: Python Tkinter 簡介 Button 控件是一種標準 Tkinter 控件, 用來展現不同樣式的按鈕...
摘要:已獲原作者授權原系列地址下面我們將以中最簡單的控件控件開始這個系列的教程在中控件用以顯示文字和圖片通常被用來展示信息而非與用戶交互譯者注也可以綁定點擊等事件只是通常不這么用程序員的教程怎么能少了我們尊重這個傳統但我們不說讓我們來秀出吧下面的 已獲原作者授權. 原系列地址: Python Tkinter Hello Tkinter Label 下面我們將以 Tkinter 中最簡單的控...
摘要:已獲原作者授權原系列地址單選按鈕是一種可在多個預先定義的選項中選擇出一項的控件單選按鈕可顯示文字或圖片顯示文字時只能使用預設字體該控件可以綁定一個函數或方法當單選按鈕被選擇時該函數或方法將被調用單選按鈕這個名字來源于收音機上的調頻按鈕這些按 已獲原作者授權. 原系列地址: Python Tkinter Radio Buttons 單選按鈕是一種可在多個預先定義的選項中選擇出一項的 T...
摘要:已獲原作者授權原系列地址簡介是用來接收字符串等輸入的控件該控件允許用戶輸入一行文字如果用戶輸入的文字長度長于控件的寬度時文字會向后滾動這種情況下所輸入的字符串無法全部顯示點擊箭頭符號可以將不可見的文字部分移入可見區域如果你想要輸入多行文本就 已獲原作者授權. 原系列地址: Python Tkinter 簡介 Entry 是 Tkinter 用來接收字符串等輸入的控件. 該控件允許用戶...
閱讀 3487·2023-04-25 20:41
閱讀 2660·2023-04-25 16:40
閱讀 1432·2021-09-23 11:44
閱讀 1252·2021-09-10 10:51
閱讀 1681·2021-09-07 09:59
閱讀 1642·2019-12-27 12:08
閱讀 551·2019-08-30 15:44
閱讀 3334·2019-08-30 11:08