【Python入門級教程】Python GUI界面教學(03)——Text控件
標簽: python
文章目錄
這次時Text、Entry控件的教程。
1.Text。
1.Text的簡介。
Text一般用于展示文本、輸入文本。在編寫代碼時,需要將其他控件與文本一起展示時可以使用Text。
2.怎么創建Text?
只需要像這樣:
class tk:#引入
from tkinter import Tk,Text
root=tk.Tk()#窗口
#創建Text
text=tk.Text(root)
text.pack(fill='both',expand=1)#fill指X、Y軸都填充,expand指是否占據父窗口(master)的剩余部分,這里為True
root.mainloop()#循環
就是這個樣子。
3.Text的選項。
選項 | 功能 |
---|---|
background | 設置背景顏色,可以是顏色單詞也可以是16進制數‘,"bg"是它的縮寫。 |
selectforeground | 設置文本被選中時的前景色,可以是顏色單詞也可以是16進制數‘。 |
foreground | 設置前景色,可以是顏色單詞也可以是16進制數‘,"fg"是它的縮寫。 |
selectbackground | 設置文本被選中時的背景色,可以是顏色單詞也可以是16進制數‘。 |
insertbackground | 設置光標的顏色。 |
insertborderwidth | 設置光標寬度。 |
insertofftime | 設置光標消失的時間,單位時毫秒。 |
insertontime | 設置光標出現的時間,單位時毫秒。 |
undo | 是否支持撤銷,默認為False。 |
maxundo | 設置最大撤銷次數。 |
setgrid | 設置是否使用grid布局。 |
takefocus | 設置是否能將焦點轉移至Text。 |
wrap | 設置換行方式,默認是"char",可選"none"(不自動換行)、“word”(按空格換行)。 |
xscrollcommand | 設置X軸滾動條在Text的命令(?),值為滾動條的set方法,不帶括號。 |
yscrollcommand | 設置Y軸滾動條在Text的命令(?),值為滾動條的set方法,不帶括號。 |
relief | 設置邊框樣式,例如"flat",“groove”,“ridge”,這些英文在Tkinter中有專門的變量,例如groove就是tk.GROOVE,在傳參時可以寫成relief=tk.GROOVE。 |
font | 字體,提供一個元組,如()。 |
bd | 邊框像素,默認是2。 |
height | Text的高度。 |
width | Text的長度。 |
highlightcolor | 高亮的顏色。 |
justify | 對齊方式,有"center",“left”,“right”,默認是"center"。 |
padx | 設置x軸方向的內邊距。 |
pady | 設置y軸方向的內邊距。 |
state | 設置Text狀態,可選"normal"、“disabled”。 |
tabs | 設置按下tab后空出的長度,當傳入整形數時,單位時像素。當值為字符串+上"c"("_c")時單位時厘米。 |
4.獲取Text的內容。
1.get方法。
text.get(index1,index2)
通過get方法返回Text中純文本的內容,index1為開始,index2為結束,若要獲取全部內容即為
text.get('0.0','end')
2.dump方法。
textdump(index1, index2=None, command=None, **kw)
dump方法返回的值就十分詳細的,連tag都給你返回出來。
index1、index2的功能和get的一樣。
例子:
class tk:#引入
from tkinter import Tk,Text,Button
root=tk.Tk()#窗口
#創建Text
text=tk.Text(root,tabs='1')
text.pack(fill='both',expand=1)#fill指X、Y軸都填充,expand指是否占據父窗口(master)的剩余部分,這里為True
#獲得內容
tk.Button(root,text='CLICK',command=lambda v=0:print(text.dump('0.0','end'))).pack(fill='x')
root.mainloop()#循環
返回的列表的元組的第一項([0])是類型,類型有以下幾種:
名稱 | 類型 |
---|---|
text | 平平無奇的正常文本。 |
tagon | tag的開始,第二項是tag的名稱,第三項則是tag的起始位置。 |
tagoff | tag的結束,第二項是tag的名稱,第三項則是tag的結束位置。 |
mark | mark的位置,第二項是名稱,第三項是位置。 |
window | 控件,第二項是master和控件的類型,第三項是索引。 |
image | 圖片,第二項是類型,第三項是索引。 |
5.Text撤銷文本。
在此之前,undo選項必須是True,否則無法撤銷。
方法 | 作用 |
---|---|
edit_reset() | 清空存放操作記錄的棧。 |
edit_undo() | 撤銷。 |
edit_redo() | 恢復。 |
edit_separator() | 插入分隔符。 |
如果undo操作達到極限但還是繼續undo時,Tkinter會報錯。
Tkinter默認時每一行末尾插入一個分隔符,這會導致撤銷時整行都撤銷,所以綁定一個時間用于插入分隔符,防止這個現象發生:
text.bind('<KeyPress>',lambda v=0:text.edit_separator())
6.移動Text的光標。
使用text的mark_set方法設置光標位置,例如:
text.mark_set('insert',0.0)
即為將光標設置到第0(1)行的第0(1)個字符。
7.獲得Text的光標的位置。
使用text的index方法獲得,例如:
text.index('insert')
index中間的參數可以換成其它的,例如tag名稱。
8.滾動Text到指定位置。
使用see方法,例如:
text.see("end")
滾動Text到最后一個字符。
9.將指定區域的所有內容替換為指定字符串。
使用replace方法。
text.replace(index1,index2=None,char,**kw)
index1、index2不用多說了,char為替換的字符。
10.搜索文本。
text.search(pattern, index, stopindex=None, forwards=None, backwards=None, exact=None, regexp=None, nocase=None, count=None)
regexp若為為True,則 pattern 被解釋為Tcl格式的正則表達式、
nocass若為True則搜索時忽略大小寫。
count需要被設置為IntVar,用于存放搜索到的數量。
11.Tags。
Tag可以理解為在Text中的標記。
方法 | 作用 |
---|---|
tag_config(tagName,cnf=None,**kw) | 設置tag的屬性,如果tag不存在則創建新的tag但不設置索引。 |
tag_configure(tagName,cnf=None,**kw) | 和tag_config一樣。 |
tag_delete(*tagNames) | 刪除tag。 |
tag_bind(tagName, sequence, func, add=None) | 為指定的tag綁定事件。 |
tag_cget(tagName, option) | 返回指定tag的option選項的值。 |
tag_lower(tagName, belowThis=None) | 降低tag的優先級,若belowThis不為空則降至belowThis下面。 |
tag_raise(tagName, aboveThis=None) | 升高tag的優先級,若aboveThis不為空則升至其上。 |
tag_ranges(tagName) | 以列表的方式返回tag的文本。 |
tag_remove(tagName, index1, index2=None) | 刪除index1到index2的所有tagName。 |
tag_unbind(tagName, sequence, funcid=None) | 取消綁定tag事件。 |
12.Text嵌入控件。
使用window_create方法。
text.window_create(index, **options)
例如:
text.window_create('end',window=Tk_obj)
Tk_obj為Tkinter控件,master為text。
13.Text返回所有window。
使用window_names方法即可。
text.window_names()
14.bind與unbind。
綁定與取消綁定事件。
bind(sequence,func=None)
15.xview與yview。
一般用于給滾動條(scrollbar)的command選項賦值。
scrollbar1['command']=text.xview
scrollbar2['command']=text.yview
xview用于X軸滾動,如果要使用text的wrap選項應為"none"。
xview用于Y軸滾動。
16.插入文本。
使用insert方法。
text.insert(index,chars,*args)
insert時可以附加tag,只需要在chars后面填寫。
插入時text的state必須是normal(正常)。
17.后期設置Text選項。
使用config方法即可。
text.config(name=value)
替換name和value即可,同樣這還可以延長,config可以設置多個選項。
text.config(state='normal',wrap='none')
上面代碼就是設置了text的狀態為正常及從不自動換行。
只要是合法的參數和選項都能修改。
18.mark_set。
設置mark,例如insert。
2.尾聲。
下一次是Entry的更新,Text的內容太多了。
智能推薦
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
猜你喜歡
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...
styled-components —— React 中的 CSS 最佳實踐
https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...
19.vue中封裝echarts組件
19.vue中封裝echarts組件 1.效果圖 2.echarts組件 3.使用組件 按照組件格式整理好數據格式 傳入組件 home.vue 4.接口返回數據格式...