中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python?Tkinter中事件處理的示例分析

發布時間:2022-01-20 13:39:16 來源:億速云 閱讀:236 作者:清風 欄目:開發技術

本文將為大家詳細介紹“Python Tkinter中事件處理的示例分析”,內容步驟清晰詳細,細節處理妥當,而小編每天都會更新不同的知識點,希望這篇“Python Tkinter中事件處理的示例分析”能夠給你意想不到的收獲,請大家跟著小編的思路慢慢深入,具體內容如下,一起去收獲新知識吧。

事件處理,是 GUI 程序中不可或缺的重要組成部分,相比來說,控件只是組成一臺機器的零部件, 而事件處理則是驅動這臺機器“正常”運轉的關鍵所在,它能夠將零部件之間“優雅”的貫穿起來,因此“事件處理”可謂是 GUI 程序的“靈魂”,同時它也是實現人機交互的關鍵。

對于“事件”這一名詞,在講解控件時也偶爾提及過,在本節我們將對 Tkinter 中的事件處理機制做更為詳細的介紹。

在一款 GUI 程序中,我們將用戶對軟件的操作統稱為“事件”,比如鼠標點擊按鈕、鍵盤輸入文本以及窗口管理器觸發的重繪事件等,這些事件有一個共同的特點,即都是由用戶自身直接或者間接觸發的。

事件綁定方法

Tkinter 提供的事件處理機制允許我們為“控件”綁定相應的事件和事件處理函數(即 callback函數),從而實現控件與用戶的交互,其語法格式如下:

widget.bind("<event>",func)

上述語法中,widget 代表控件的實例對象,之后,采用 bind() 方法進行事件綁定,該函數有兩個參數:

  • <event>:一個字符串參數,表示事件的類型,并使用“尖括號”的形式進行包裹;

  • func:表示事件的處理函數(callback,即回調函數),當觸發事件時,Tk 會攜帶事件對象(Event)去調用 func 方法。

注意:bind() 方法可以完成事件與處理函數綁定,而使用 unbind() 方法可以將事件與處理函數解綁。

常用事件類型

事件類型(也稱事件碼)是 Tkinter 模塊規定的,主要包括鼠標、鍵盤、光標等相關事件,Tkinter 為其規定了相應的語法格式:

<modifier-type-detail>

上述語法由三部分組成,說明如下:

  • <>:事件類型必須包含在“尖括號”內;

  • modifier:可選項,事件類型的修飾符,通常用于描述組合鍵、雙擊<Double-Button-1>、大寫鎖定鍵<Lock>以及<Alt-Shift>等;

  • type:是必不可少的一項,表示事件的具體類型;

  • detail:可選項,通常用于描述具體的哪個按鍵,比如 <Button-1> 表示鼠標左鍵;

這里有必要對經常使用的 modifier 修飾符做簡單的介紹,修飾符可以修改事件的激活條件,比如雙擊鼠標或者需要同時按下某個鍵才觸發事件,常用的修飾符如下:

修飾符說明
Control事件發生時需按下 Control 鍵
Alt事件發生時需按下 Alt 鍵
Shift事件發生時需按下 Shift 鍵
Lock事件發生時需處于大寫鎖定狀態
Double事件連續發生兩次,比如雙擊鼠標
Triple事件連續發生三次
Quadruple事件連續發生四次

下述表格中介紹了 Tkinter 中經常使用的事件類型,如下所示:

事件碼說明
<ButtonPress-1>單擊鼠標左鍵,簡寫為<Button-1>,后面的數字可以是1/2/3,分別代表左鍵、中間滑輪、右鍵
<ButtonRelease-1>釋放鼠標左鍵,后面數字可以是1/2/3,分別代表釋放左鍵、滑輪、右鍵
<B1-Motion>按住鼠標左鍵移動,<B2-Motion>和<B3-Motion>分別表示按住鼠標滑輪移動、右鍵移動
<MouseWheel>轉動鼠標滑輪
<Double-Button-1>雙擊鼠標左鍵
<Enter>鼠標光標進入控件實例
<Leave>鼠標光標離開控件實例
<Key>按下鍵盤上的任意鍵
<KeyPress-字母>/<KeyPress-數字>按下鍵盤上的某一個字母或者數字鍵
<KeyRelease>釋放鍵盤上的按鍵
<Return>回車鍵,其他同類型鍵有<Shift>/<Tab>/<Control>/<Alt>
<Space>空格鍵
<UP>/<Down>/<Left>/<Right>方向鍵
<F1>...<F12>常用的功能鍵
<Control-Alt>組合鍵,再比如<Control-Shift-KeyPress-T>,表示用戶同時點擊 Ctrl + Shift + T
<FocusIn>當控件獲取焦點時候觸發,比如鼠標點擊輸入控件輸入內容,可以調用 focus_set() 方法使控件獲得焦點
<FocusOut>當控件失去焦點時激活,比如當鼠標離開輸入框的時候
<Configure >控件的發生改變的時候觸發事件,比如調整了控件的大小等
<Deactivate>當控件的狀態從“激活”變為“未激活”時觸發事件
<Destroy>當控件被銷毀的時候觸發執行事件的函數
<Expose>當窗口或組件的某部分不再被覆蓋的時候觸發事件
<Visibility>當應用程序至少有一部分在屏幕中是可見狀態時觸發事件

Event事件對象

當事件觸發后,Tkinter 會自動將事件對象交給回調函數進行下步的處理,Event 對象包含了以下常用屬性:

屬性說明
widget發生事件的是哪一個控件
x,y相對于窗口的左上角而言,當前鼠標的坐標位置
x_root,y_root相對于屏幕的左上角而言,當前鼠標的坐標位置
char用來顯示所按鍵相對應的字符
keysym按鍵名,比如 Control_L 表示左邊的 Ctrl 按鍵
keycode按鍵碼,一個按鍵的數字編號,比如 Delete 按鍵碼是107
num1/2/3中的一個,表示點擊了鼠標的哪個按鍵,按鍵分為左、中、右
width,height控件的修改后的尺寸,對應著 <Configure>事件
type事件類型

下面看一組關于“鍵盤事件”的使用示例:

from tkinter import *
# 定義事件函數,必須用event參數
def show_key(event):
    # 查看觸發事件的按鈕
    s=event.keysym
    # 將其顯示在按鈕控件上
    lb.config(text=s)
root=Tk()
root.config(bg='#87CEEB')
root.title("C語言中文網")
root.geometry('450x350+300+200')
root.iconbitmap('C:/Users/Administrator/Desktop/C語言中文網logo.ico')
# 添加一個按鈕控件
lb=Label(root,text='請按鍵',fg='blue',font=('微軟雅黑',15))
# 給按鈕控件綁定事件,按下任意鍵,然后調用事件處理函數。注意,此處需要在英文狀態下進行輸入
lb.bind('<Key>',show_key)
# 設置按鈕獲取焦點
lb.focus_set()
lb.pack()
# 顯示窗口
root.mainloop()

程序運行結果如下:

Python?Tkinter中事件處理的示例分析

圖1:Tkinter事件處理

注意:在上述示例中,只有當 Label 控件獲取焦點后才能接收鍵盤事件,因此在給控件綁定事件和回調函數后,需要使用 focus_set() 方法來獲取焦點。

下面再看一組關于“鼠標事件”的相關示例:

# 定義事件函數
from tkinter import *
def handleMotion(event):
    lb1['text'] = '你移動了光標的所在位置'
    lb2['text'] = '目前光標位置:x ='+ str(event.x)+';y='+str(event.y)
    print('光標當前位置',event.x,event.y)
# 創建主窗口
win = Tk()
win.config(bg='#87CEEB')
win.title("C語言中文網")
win.geometry('450x350+300+200')
win.iconbitmap('C:/Users/Administrator/Desktop/C語言中文網logo.ico')
# 創建一個窗體容器frame
frame = Frame (win, relief=RAISED, borderwidth=2, width=300,height=200)
frame.bind('<Motion>',handleMotion)
lb1 = Label(frame,text='沒有任何事件觸發', bg='purple', )
# 使用place進行位置布局,下一節會介紹
lb1.place (x=20,y=20)
lb2 = Label(frame,text='')
lb2.place (x=16,y=60)
frame.pack(side=TOP)
# 顯示窗口
win.mainloop()

程序運行結果如下:

Python?Tkinter中事件處理的示例分析

圖2:Tkinter鼠標移動事件

python的數據類型有哪些?

python的數據類型:1. 數字類型,包括int(整型)、long(長整型)和float(浮點型)。2.字符串,分別是str類型和unicode類型。3.布爾型,Python布爾類型也是用于邏輯運算,有兩個值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數據類型,集合中可以放任何數據類型。5. 元組,元組用”()”標識,內部元素用逗號隔開。6. 字典,字典是一種鍵值對的集合。7. 集合,集合是一個無序的、不重復的數據組合。

感謝您能讀到這里,小編希望您對“Python Tkinter中事件處理的示例分析”這一關鍵問題有了從實踐層面最深刻的體會,具體使用情況還需要大家自己動手實踐使用過才能領會,如果想閱讀更多相關內容的文章,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

河间市| 尼玛县| 浮梁县| 嘉荫县| 时尚| 荆门市| 顺平县| 三穗县| 峡江县| 神木县| 濉溪县| 宜阳县| 九寨沟县| 东乌珠穆沁旗| 长岭县| 呼和浩特市| 金门县| 万宁市| 揭阳市| 芒康县| 龙州县| 商河县| 龙口市| 池州市| 翼城县| 海晏县| 青川县| 社旗县| 江源县| 仁布县| 邓州市| 刚察县| 婺源县| 定结县| 望江县| 夹江县| 彰化县| 嘉兴市| 嘉鱼县| 潼关县| 巴里|