icp備案 網(wǎng)站服務(wù)內(nèi)容蘇州網(wǎng)站制作開發(fā)公司
Tkinter是Python默認的GUI庫,因此使用時直接導(dǎo)入即可:import tkinter
17.1 Tkinter之初體驗
?
代碼分析:
tkinter.mainloop()通常是程序的最后一行代碼,執(zhí)行后程序進入主事件循環(huán)。
17.2 進階版本?
將代碼封裝成類:
運行效果:
代碼分析:
?注:修改pack()方法的side參數(shù)side參數(shù)可以設(shè)置為LEFT、RIGHT、TOP和BOTTOM四個方位,默認的設(shè)置時side=tkinter.TOP.
還可以設(shè)置pack()方法的padx和pady參數(shù)自定義按鈕的偏移位置。
17.3 Label組件
Lable組件是用于在界面上輸出描述的標簽。
有時候可能需要將圖片和文字分開,例如將圖片作為背景,文字顯示再圖片的上面,只需要設(shè)置compound選項即可:
17.4 Button組件
Button組件用于實現(xiàn)一個按鈕,它的絕大多數(shù)選項與Label組件是一樣的。不過Button組件有一個Label組件實現(xiàn)不了的功能,那就是可以接收用戶的信息。
Button組件有一個command選項,用于指定一個函數(shù)或方向,當(dāng)用戶單擊按鈕時,Tkinter就會自動調(diào)用這個函數(shù)或方法了。
17.5 Checkbutton組件
Checkbutton組件就是常見的多選按鈕,而Radiobutton則是單選按鈕。
?
17.6 Radiobutton組件
Radiobutton組件與Checkbutton組件用法基本一致,唯一不同的是Radiobutton實現(xiàn)的是“單選”的效果。
要實現(xiàn)這種互斥的效果,同一組內(nèi)的所有Radiobutton只能共享一個variable選項,并且需要設(shè)置不同的value選項值:
17.7 LabelFrame組件
LabelFrame組件是Frame框架的進化版,從樣式上來看,也就是添加了Label的Frame,但有了它,Checkbutton和Radiobutton的組件分組就變得簡單了:
17.8 Entry組件
Entry組件就是平時所說的輸入框。輸入框是與程序打交道的一個途徑,例如程序要求輸入賬號密碼,那么就需要提供兩個輸入框,用于接收密碼的輸入框還會用星號將實際輸入的內(nèi)容隱藏起來。
在輸入框中用代碼添加和刪除內(nèi)容,同樣也是使用insert()和delete()方法:
?獲取輸入框里的內(nèi)容,可以使用Entry組件的get()方法。
當(dāng)然也可以將一個Tkinter的變量(通常是StringVar)掛鉤到textvariable選項,然后通過變量get()方法獲取。
在下面的例子中添加一個按鈕,當(dāng)單擊按鈕的時候,獲取輸入框中的內(nèi)容并打印出來,然后清空輸入框:
如果想設(shè)計一個密碼輸入框,即使用星號(*)代替用戶輸入的內(nèi)容,只需要設(shè)置show選項即可:
另外,Entry組件還支持驗證輸入內(nèi)容的合法性。例如輸入框架要求輸入的是數(shù)字,用戶輸入了字母那就屬于“非法"。實現(xiàn)該功能,需要通過設(shè)置validate、validatecommand和invalidcommand三個選項。
首先,啟用驗證的”開關(guān)“是validate選項,該選項可以設(shè)置的值:
其次是為valideatecommand選項提供一個驗證函數(shù),該函數(shù)只能返回True或False表示驗證結(jié)果。一般情況下驗證函數(shù)只需要知道輸入框的內(nèi)容即可,可以通過Entry組件的get()方法獲得該字符串。
最后 ,invalidcommand選項指定的函數(shù)只有在validatecommand的返回值為False的時候才被調(diào)用。
在下面的例子中,在第一個輸入框輸入”小魷魚“,并通過Tab鍵將焦點轉(zhuǎn)移到第二個輸入框,validatecommand指定的驗證函數(shù)被觸發(fā)并返回False,接著invalidcommand被觸發(fā):
其實,Tkinter還有一個隱藏功能,即Tkinter為驗證函數(shù)提供一些額外的選項,
17.12 Text組件?
Text組件用于顯示和處理多行文本。當(dāng)創(chuàng)建一個Text組件時,它里面是沒有內(nèi)容的,為了給其插入內(nèi)容,可以使用Insert()方法以及INSERT或END索引號:
Text組件不僅支持插入和編輯文本,還支持插入image對象和window組件:
下面將實現(xiàn)單機一下按鈕顯示一張圖片的功能:
17.12.1 Indexes用法
Indexes用來指向text組件中文本的位置,與python的序列索引一樣,Text組件索引也對應(yīng)實際字符的位置。?