Entry和Text組件都是可接收用戶輸入的輸入框組件辖源,區(qū)別是Entry是單行輸入框組件勋锤,Text是多行輸入框組件痘番,而且Text可以為不同的部分添加不同的格式伊履,甚至是響應(yīng)事件。
一扣唱、Entry組件
1.Entry的參數(shù)
下面是Entry的參數(shù):
參數(shù)名 | 說明 |
---|---|
bg或background | 背景色彩 |
borderwidth或bd | 邊界寬度藕坯,默認(rèn)是2像素 |
command | 當(dāng)用戶更改內(nèi)容時,會自動執(zhí)行此函數(shù) |
cursor | 當(dāng)鼠標(biāo)光標(biāo)在文本框上時的光標(biāo)形狀 |
exportselection | 如果執(zhí)行選取時噪沙,所選取的字符串會自動輸出至剪貼板炼彪,如果想要避免,可以設(shè)置exportselection=0 |
fg或foreground | 前景色彩 |
font | 字形 |
height | 高正歼,單位是字符高 |
highlightbackground | 當(dāng)文本框取得焦點時的背景顏色 |
highlightcolor | 當(dāng)文本框取得焦點時的顏色 |
justify | 當(dāng)含多行文字時辐马,最后一行的對齊方式 |
relief | 默認(rèn)是relief=FLAT,可由此控制文字外框 |
selectbackground | 被選取字符串的背景色彩 |
selectborderwidth | 選取字符串時的邊界寬度局义,預(yù)設(shè)是1 |
selectfroeground | 被選取字符串的前景色彩 |
show | 顯示輸入字符喜爷,例如冗疮,show='*'表示顯示星號,常用于輸入密碼字段 |
state | 輸入狀態(tài)檩帐,默認(rèn)是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() | 獲取文本框中的內(nèi)容 |
insert() | 改變文本框中的內(nèi)容 |
delete() | 刪除指定文本框中的部分內(nèi)容 |
- get()方法可以直接使用不做說明
-
insert()方法使用時需要指定插入的文本索引
insert(index,str)
index是插入是的索引诅挑,從0開始,1個字符算1個索引號泛源;str是需要插入的字符串拔妥。 -
delete()方法使用時需要指定刪除的字符起始和結(jié)束索引號
delete(self,first,last=None)
刪除的是Entry內(nèi)的從第first字符到第last字符間的內(nèi)容,如果要刪除整個字符串可以使用delete(0,END)
二俩由、Text組件
Text組件是多行文本框毒嫡,實際上Text除了能輸入文本癌蚁,還能插入圖片幻梯,設(shè)置文本內(nèi)容的格式,可以看作一個功能強大的“富文本”編輯組件努释。
1.Text的參數(shù)
列出如下:
參數(shù)名 | 說明 |
---|---|
bg或background | 背景色彩 |
borderwidth或bd | 邊界寬度碘梢,默認(rèn)是2像素 |
cursor | 當(dāng)鼠標(biāo)光標(biāo)在復(fù)選框上時的光標(biāo)形狀 |
exportselection | 如果執(zhí)行選擇操作時,所選擇的字符串會自動輸出至剪貼板伐蒂,如果想要避免如此可以設(shè)置exportselection=0 |
fg或foreground | 字形色彩 |
font | 字形 |
height | 高煞躬,單位是字符高,實際高度會視字符高度而定 |
highlightbackground | 當(dāng)文本框取得焦點時的背景顏色 |
highlightcolor | 當(dāng)文本框取得焦點時的顏色 |
highlightthickness | 取得焦點時的厚度逸邦,默認(rèn)值是1 |
insertbackground | 插入光標(biāo)的顏色恩沛,默認(rèn)是黑色 |
insertborderwidth | 圍繞插入游標(biāo)的3D厚度,默認(rèn)是0 |
padx | Text左/右框與文字最左/最右的間距 |
pady | Text上/下框與文字最上/最下的間距 |
relief | 默認(rèn)是relief=SUNKEN缕减,可由此控制文字外框 |
selectbackground | 被選取字符串的背景色彩 |
selectborderwidth | 選取字符串時的邊界厚度雷客,默認(rèn)值是1 |
selectforeground | 被選取字符串的前景色彩 |
state | 輸入狀態(tài),默認(rèn)是NORMAL桥狡,表示可以輸入搅裙,DISABLED則是無法編輯 |
tab | 可設(shè)置按Tab鍵時,如何定位插入點 |
width | Text的寬裹芝,單位是字符寬 |
wrap | 可控制某行文字太長時的處理部逮,默認(rèn)是wrap=CHAR,當(dāng)某行文字太長時嫂易,可從字符做斷行兄朋;當(dāng)wrap=WORD時,只能從字做斷行 |
xscrollcommand | 在x軸使用滾動條 |
yscrollcommand | 在y軸使用滾動條 |
可以看到Text的參數(shù)大部分與Entry的參數(shù)一樣怜械,只是多了一部分對框內(nèi)文本進行操作時的參數(shù)以及多行顯示時需要用到的功能蜈漓。
2.Text的方法
(1)insert()方法:在指定的位置插入字符串
用法與Entry的insert()一樣穆桂,語法為:
insert(index,str)
:在index的位置使用INSERT或者END,則直接插入文本末端位置融虽。
需要注意的是享完,Text的索引與Entry的不一樣
下面是Text的索引常用參數(shù)
索引方式 | 說明 |
---|---|
row.column | 行號從1開始,列號從0開始.比如:1.0代表第1行第1列有额;3.7代表第3行第8列 |
INSERT | 目前插入點的位置 |
CURRENT | 光標(biāo)目前位置相對于字符的位置 |
END | 緩沖區(qū)最后一個字符后的位置 |
“+count chars” | count是數(shù)字般又,例如,“+2c”索引往后移動兩個字符巍佑。 |
“-count chars” | count是數(shù)字茴迁,例如,“-2c”索引往前移動兩個字符萤衰。 |
(2)get()方法
Text對象的get( )方法可以取得目前所選中的文字堕义。
Text對象會將所選文字的
起始索引放在SEL_FIRST,
結(jié)束索引放在SEL_LAST
將SEL_FIRST和SEL_LAST當(dāng)作get( )的參數(shù)脆栋,就可以獲得目前所選的文字倦卖。
(3)delete()方法
與Entry的delete()方法類似,區(qū)別在于索引的表示方法不一樣椿争。
(4)marks書簽
在編輯文件時怕膛,可以在文件特殊位置建立書簽(Marks),方便查詢秦踪。書簽是無法顯示的褐捻,但會在編輯系統(tǒng)內(nèi)被記錄。如果書簽內(nèi)容被刪除椅邓,則此書簽也將自動被刪除柠逞。
其實在tkinter內(nèi)默認(rèn)有兩個書簽:INSERT和CURRENT。
下面是書簽的用法:
書簽方法 | 說明 |
---|---|
index(mark) | 傳回指定書簽的line和column |
mark_names( ) | 傳回這個Text對象所有的書簽 |
mark_set(mark,index) | 在指定的index位置設(shè)置書簽 |
mark_unset(mark) | 取消指定書簽設(shè)置 |
(5)tags標(biāo)簽
標(biāo)簽(Tags)是指一個區(qū)域文字景馁,然后我們可以為這個區(qū)域取一個名字板壮,這個名字稱作標(biāo)簽,可以使用此標(biāo)簽名字代表這個區(qū)域文字裁僧。
有了標(biāo)簽后个束,我們可以針對此標(biāo)簽做更進一步的工作,例如聊疲,將字形茬底、色彩等應(yīng)用在此標(biāo)簽上。
標(biāo)簽方法 | 說明 |
---|---|
tag_add(tagname,startindex[,endindex] …) | 將startindex和endindex間的文字命名為tagname標(biāo)簽 |
tag_config(tagname,options, … ) | 可以為標(biāo)簽執(zhí)行特定的編輯获洲,或動作綁定阱表。① background:背景顏色。② borderwidth:文字外圍厚度,默認(rèn)是0最爬。③ font:字形涉馁。④ foreground:前景顏色。⑤ justify:對齊方式爱致,默認(rèn)是LEFT烤送,也可以是RIGHT或CENTER。⑥ overstrike:如果是True糠悯,加上刪除線帮坚。⑦ underline:如果是True,加上下畫線互艾。⑧ wrap:當(dāng)使用wrap模式時试和,可以使用NONE、CHAR或WORD |
tag_delete(tagname) | 刪除此標(biāo)簽纫普,同時移除此標(biāo)簽特殊的編輯或綁定 |
tag_remove(tagname[,startindex[,endindex]] … ) | 刪除標(biāo)簽阅悍,但是不移除此標(biāo)簽特殊的編輯或綁定 |
除了可以使用tag_add( )自行定義標(biāo)簽外,系統(tǒng)還有一個內(nèi)建標(biāo)簽SEL昨稼,代表所選取的區(qū)間节视。
了解了標(biāo)簽的概念后,我們就可以針對特定區(qū)間文字或所選取的文字做編輯了悦昵。
(6)Cut/Copy/Paste功能
編輯文件時剪切/復(fù)制/粘貼(Cut/Copy/Paste)是很常用的功能肴茄,這些功能其實已經(jīng)被內(nèi)建在tkinter中了晌畅。
使用方法:
text.event_generate("<<Cut>>")
text.event_generate("<<Copy>>")
text.event_generate("<<Paste>>")
(7)復(fù)原與重復(fù)(Redo 與 Undo)
Text控件有一個簡單復(fù)原(undo)和重做(redo)的機制但指,這個機制可以應(yīng)用于文字刪除(delete)和文字插入(insert)。
Text控件在默認(rèn)環(huán)境下沒有開啟這個機制抗楔,如果要使用這個機制棋凳,可以在Text( )方法內(nèi)增加undo=True參數(shù)。
text = Text(root,undo=True)
添加了這個參數(shù)以后连躏,
就可以用text對象調(diào)用edit_undo( )和edit_redo( )方法剩岳,
這個方法會自動執(zhí)行Undo和Redo動作。
(8)查找文字search( )
在Text控件內(nèi)可以使用search( )方法查找指定的字符串入热,這個方法會傳回找到第一個指定字符串的索引位置拍棕。
假設(shè)Text控件的對象是text,它的語法如下勺良。
pos=text.search(key, startindex, endindex)
參數(shù)說明:
(1)pos:傳回所找到的字符串的索引位置绰播,如果查找失敗則傳回空字符串。
(2)key:所查找的字符串尚困。
(3)startindex:查找起始位置蠢箩。
(4)endindex:查找結(jié)束位置,如果查找到文檔最后可以使用END。
(9)插入圖片image_create()方法
Text有一個image_create()方法谬泌,可以實現(xiàn)插入PhotoImage對象的圖片滔韵。
使用方法:
text.image_create(self,index,cnf={},**kw)
三、默認(rèn)含滾動條的ScrolledText組件
在tkinter.scrolledtext模塊內(nèi)有ScrolledText控件掌实,這是一個默認(rèn)含有滾動條的Text控件陪蜻,使用時可以先導(dǎo)入此模塊,執(zhí)行時就可以看到滾動條贱鼻。
使用方法:
from tkinter.scrolledtext import ScrolledText
root = Tk()
text = ScrolledText(root)