GUI tkinter (bind)事件篇


"""
事件:
1、我們的很多操作,比如我們點擊了一下鼠標,這就是一 個事件,而操作系統會根據我們的相應的事件產生相應的消息,
操作系統把消息傳遞給我們的應用程序,然后我們的應用程序根據操作系統傳入的數據執行相應的命令。
2、事件是我們觸發的,消息是操作系統根據我們的事件產 生的,我們通常對於“消息”並不多關注,我們重視的是 “事件”。

********** 事件及其綁定 ***************
1、bind 函數的調用規則: 窗體對象.bind(事件類型,回調函數)
2、所謂的“回調函數”,就是這個函數我們不用去調用它, 當相應的事件發生的時候,它會自動取調用。比如當我們 的按鈕被按下的時候,它會被自動調用。

********** 常用的事件 ***************
1、我們在使用 bind 函數的時候,它的第一個參數就是事件 的類型了。
2、<Button-1>表示鼠標左鍵單擊,其中的 1 換成 3 表示右 鍵被單擊,為 2 的時候表示鼠標中鍵,感覺不算常用。
3、<KeyPress-A>表示 A 鍵被按下,其中的 A 可以換成其他
的鍵位。
4、<Control-V>表示按下的是 Ctrl 和 V 鍵,V 可以換成其他 鍵位。
5、<F1>表示按下的是 F1 鍵,對於 Fn 系列的,都可以隨便 換。

********** 再看綁定 ***************
1.事件不僅可以與 Button 綁定,我們之前看過源代碼,發現 bind 函數是定義在 Misc 類里面的,也就是說,這個 bind 可以被絕大多數組件類所使用。
2.也就是說,我們可以讓“標簽”來模擬“按鈕”的作用。
3.因為標簽是 Label 類,而 Label 類繼承自 Widget,而 Widget 繼承自 BaseWidget,而 Basewidget 繼承自 Misc。
4.其實不僅是標簽可以模擬 button,任何組件都可以模擬 它,只是那么有用。

"""

from tkinter import *

def testLabel(event):
global base
lb = Label(base, text = "這是一個Label組件", background = "green")
lb.pack()

base = Tk()
obj = Label(base, text = "模擬按鈕")
obj.bind("<Button-1>",testLabel)
obj.pack()
base.mainloop()
運行結果如下:

 

"""
************* 關於bind 函數***************
1.關於 bind 函數,還有兩個版本的,不能說高級低級,只 是使用的方面不同。
2.可以在全程序級別的綁定,使用 bind_all,它的參數類 型和 bind 一樣,它通常用於全局的快捷鍵,比如 F1 通常 是用來打開幫助文檔。
3.還可以綁定某些類別,使用 bind_class,它接受三個參數, 第一個參數是類名,第二個參數是事件類型,第三個參數 是相應的操作,
比如 w.bind_class(“Entry”, “<Control-V>”,my_paste)。它就是綁定了所有的所有的 輸入框的 Ctrl+V 表示粘貼。

*************解除綁定**************
1.接觸綁定我們使用 unbind 方法,它和 bind 的使用很相 似。
2.不過 unbind 方法只需要一個參數就可以了,它只需要解 除綁定的事件類型,因為它會解除該綁定事件類型的所有 回調函數。

"""

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM