Entry和Text組件都是可接收用戶輸入的輸入框組件,區(qū)別是Entry是單行輸入框組件,Text是多行輸入框組件,而且Text可以為不同的部分添加不同的格式,甚至是響應事件。
一、Entry組件
1.Entry的參數
下面是Entry的參數:
| 參數名 | 說明 |
|---|---|
| bg或background | 背景色彩 |
| borderwidth或bd | 邊界寬度,默認是2像素 |
| command | 當用戶更改內容時,會自動執(zhí)行此函數 |
| cursor | 當鼠標光標在文本框上時的光標形狀 |
| exportselection | 如果執(zhí)行選取時,所選取的字符串會自動輸出至剪貼板,如果想要避免,可以設置exportselection=0 |
| fg或foreground | 前景色彩 |
| font | 字形 |
| height | 高,單位是字符高 |
| highlightbackground | 當文本框取得焦點時的背景顏色 |
| highlightcolor | 當文本框取得焦點時的顏色 |
| justify | 當含多行文字時,最后一行的對齊方式 |
| relief | 默認是relief=FLAT,可由此控制文字外框 |
| selectbackground | 被選取字符串的背景色彩 |
| selectborderwidth | 選取字符串時的邊界寬度,預設是1 |
| selectfroeground | 被選取字符串的前景色彩 |
| show | 顯示輸入字符,例如,show='*'表示顯示星號,常用于輸入密碼字段 |
| state | 輸入狀態(tài),默認是NORMAL表示可以輸入,DISABLE則表示無法輸入 |
| textvariable | 文字變量 |
| width | 寬,單位是字符寬 |
| xscrollcommand | 在x軸使用滾動條 |
from tkinter import *
root = Tk()
lab1 = Label(root,text="賬號")
lab2 = Label(root,text="密碼")
ent1 = Entry(root)
ent2 = Entry(root,show="*")
lab1.grid(row=0,column=0)
lab2.grid(row=1,column=0)
ent1.grid(row=0,column=1)
ent2.grid(row=1,column=1)
root.mainloop()


2. Entry的方法
下面列出了常用的Entry方法。
| 方法名 | 說明 |
|---|---|
| get() | 獲取文本框中的內容 |
| insert() | 改變文本框中的內容 |
| delete() | 刪除指定文本框中的部分內容 |
- get()方法可以直接使用不做說明
-
insert()方法使用時需要指定插入的文本索引
insert(index,str)index是插入是的索引,從0開始,1個字符算1個索引號;str是需要插入的字符串。 -
delete()方法使用時需要指定刪除的字符起始和結束索引號
delete(self,first,last=None)刪除的是Entry內的從第first字符到第last字符間的內容,如果要刪除整個字符串可以使用delete(0,END)
二、Text組件
Text組件是多行文本框,實際上Text除了能輸入文本,還能插入圖片,設置文本內容的格式,可以看作一個功能強大的“富文本”編輯組件。
1.Text的參數
列出如下:
| 參數名 | 說明 |
|---|---|
| bg或background | 背景色彩 |
| borderwidth或bd | 邊界寬度,默認是2像素 |
| cursor | 當鼠標光標在復選框上時的光標形狀 |
| exportselection | 如果執(zhí)行選擇操作時,所選擇的字符串會自動輸出至剪貼板,如果想要避免如此可以設置exportselection=0 |
| fg或foreground | 字形色彩 |
| font | 字形 |
| height | 高,單位是字符高,實際高度會視字符高度而定 |
| highlightbackground | 當文本框取得焦點時的背景顏色 |
| highlightcolor | 當文本框取得焦點時的顏色 |
| highlightthickness | 取得焦點時的厚度,默認值是1 |
| insertbackground | 插入光標的顏色,默認是黑色 |
| insertborderwidth | 圍繞插入游標的3D厚度,默認是0 |
| padx | Text左/右框與文字最左/最右的間距 |
| pady | Text上/下框與文字最上/最下的間距 |
| relief | 默認是relief=SUNKEN,可由此控制文字外框 |
| selectbackground | 被選取字符串的背景色彩 |
| selectborderwidth | 選取字符串時的邊界厚度,默認值是1 |
| selectforeground | 被選取字符串的前景色彩 |
| state | 輸入狀態(tài),默認是NORMAL,表示可以輸入,DISABLED則是無法編輯 |
| tab | 可設置按Tab鍵時,如何定位插入點 |
| width | Text的寬,單位是字符寬 |
| wrap | 可控制某行文字太長時的處理,默認是wrap=CHAR,當某行文字太長時,可從字符做斷行;當wrap=WORD時,只能從字做斷行 |
| xscrollcommand | 在x軸使用滾動條 |
| yscrollcommand | 在y軸使用滾動條 |
可以看到Text的參數大部分與Entry的參數一樣,只是多了一部分對框內文本進行操作時的參數以及多行顯示時需要用到的功能。
2.Text的方法
(1)insert()方法:在指定的位置插入字符串
用法與Entry的insert()一樣,語法為:
insert(index,str):在index的位置使用INSERT或者END,則直接插入文本末端位置。
需要注意的是,Text的索引與Entry的不一樣
下面是Text的索引常用參數
| 索引方式 | 說明 |
|---|---|
| row.column | 行號從1開始,列號從0開始.比如:1.0代表第1行第1列;3.7代表第3行第8列 |
| INSERT | 目前插入點的位置 |
| CURRENT | 光標目前位置相對于字符的位置 |
| END | 緩沖區(qū)最后一個字符后的位置 |
| “+count chars” | count是數字,例如,“+2c”索引往后移動兩個字符。 |
| “-count chars” | count是數字,例如,“-2c”索引往前移動兩個字符。 |
(2)get()方法
Text對象的get( )方法可以取得目前所選中的文字。
Text對象會將所選文字的
起始索引放在SEL_FIRST,
結束索引放在SEL_LAST
將SEL_FIRST和SEL_LAST當作get( )的參數,就可以獲得目前所選的文字。
(3)delete()方法
與Entry的delete()方法類似,區(qū)別在于索引的表示方法不一樣。
(4)marks書簽
在編輯文件時,可以在文件特殊位置建立書簽(Marks),方便查詢。書簽是無法顯示的,但會在編輯系統內被記錄。如果書簽內容被刪除,則此書簽也將自動被刪除。
其實在tkinter內默認有兩個書簽:INSERT和CURRENT。
下面是書簽的用法:
| 書簽方法 | 說明 |
|---|---|
| index(mark) | 傳回指定書簽的line和column |
| mark_names( ) | 傳回這個Text對象所有的書簽 |
| mark_set(mark,index) | 在指定的index位置設置書簽 |
| mark_unset(mark) | 取消指定書簽設置 |
(5)tags標簽
標簽(Tags)是指一個區(qū)域文字,然后我們可以為這個區(qū)域取一個名字,這個名字稱作標簽,可以使用此標簽名字代表這個區(qū)域文字。
有了標簽后,我們可以針對此標簽做更進一步的工作,例如,將字形、色彩等應用在此標簽上。
| 標簽方法 | 說明 |
|---|---|
| tag_add(tagname,startindex[,endindex] …) | 將startindex和endindex間的文字命名為tagname標簽 |
| tag_config(tagname,options, … ) | 可以為標簽執(zhí)行特定的編輯,或動作綁定。① background:背景顏色。② borderwidth:文字外圍厚度,默認是0。③ font:字形。④ foreground:前景顏色。⑤ justify:對齊方式,默認是LEFT,也可以是RIGHT或CENTER。⑥ overstrike:如果是True,加上刪除線。⑦ underline:如果是True,加上下畫線。⑧ wrap:當使用wrap模式時,可以使用NONE、CHAR或WORD |
| tag_delete(tagname) | 刪除此標簽,同時移除此標簽特殊的編輯或綁定 |
| tag_remove(tagname[,startindex[,endindex]] … ) | 刪除標簽,但是不移除此標簽特殊的編輯或綁定 |
除了可以使用tag_add( )自行定義標簽外,系統還有一個內建標簽SEL,代表所選取的區(qū)間。
了解了標簽的概念后,我們就可以針對特定區(qū)間文字或所選取的文字做編輯了。
(6)Cut/Copy/Paste功能
編輯文件時剪切/復制/粘貼(Cut/Copy/Paste)是很常用的功能,這些功能其實已經被內建在tkinter中了。
使用方法:
text.event_generate("<<Cut>>")
text.event_generate("<<Copy>>")
text.event_generate("<<Paste>>")
(7)復原與重復(Redo 與 Undo)
Text控件有一個簡單復原(undo)和重做(redo)的機制,這個機制可以應用于文字刪除(delete)和文字插入(insert)。
Text控件在默認環(huán)境下沒有開啟這個機制,如果要使用這個機制,可以在Text( )方法內增加undo=True參數。
text = Text(root,undo=True)
添加了這個參數以后,
就可以用text對象調用edit_undo( )和edit_redo( )方法,
這個方法會自動執(zhí)行Undo和Redo動作。
(8)查找文字search( )
在Text控件內可以使用search( )方法查找指定的字符串,這個方法會傳回找到第一個指定字符串的索引位置。
假設Text控件的對象是text,它的語法如下。
pos=text.search(key, startindex, endindex)
參數說明:
(1)pos:傳回所找到的字符串的索引位置,如果查找失敗則傳回空字符串。
(2)key:所查找的字符串。
(3)startindex:查找起始位置。
(4)endindex:查找結束位置,如果查找到文檔最后可以使用END。
(9)插入圖片image_create()方法
Text有一個image_create()方法,可以實現插入PhotoImage對象的圖片。
使用方法:
text.image_create(self,index,cnf={},**kw)
三、默認含滾動條的ScrolledText組件
在tkinter.scrolledtext模塊內有ScrolledText控件,這是一個默認含有滾動條的Text控件,使用時可以先導入此模塊,執(zhí)行時就可以看到滾動條。
使用方法:
from tkinter.scrolledtext import ScrolledText
root = Tk()
text = ScrolledText(root)