Tkinter 文字控制元件



文字控制元件提供了高階功能,允許您編輯多行文字並格式化其顯示方式,例如更改其顏色和字型。

您還可以使用標籤和標記等優雅的結構來定位文字的特定部分,並對這些區域應用更改。此外,您可以在文字中嵌入視窗和影像,因為此控制元件旨在處理純文字和格式化文字。

語法

以下是建立此控制元件的簡單語法:

w = Text ( master, option, ... )

引數

  • master - 表示父視窗

  • options - 以下是此控制元件最常用選項的列表。這些選項可以用逗號分隔的鍵值對使用。

序號 選項 & 描述
1

bg

文字控制元件的預設背景顏色

2

bd

文字控制元件周圍邊框的寬度。預設為 2 畫素。

3

cursor

當滑鼠懸停在文字控制元件上時將顯示的游標。

4

exportselection

通常,在文字控制元件中選擇的文字會被匯出到視窗管理器中作為選擇內容。如果您不希望這種行為,請將 exportselection 設定為 0。

5

font

插入到控制元件中的文字的預設字型。

6

fg

控制元件內文字(和點陣圖)使用的顏色。您可以更改標記區域的顏色;此選項僅為預設值。

7

height

控制元件的高度(以行而不是畫素為單位),根據當前字型大小測量。

8

highlightbackground

文字控制元件未獲得焦點時焦點高亮的色彩。

9

highlightcolor

文字控制元件獲得焦點時焦點高亮的色彩。

10

highlightthickness

焦點高亮顯示的厚度。預設為 1。將 highlightthickness 設定為 0 可抑制焦點高亮顯示。

11

插入背景顏色

插入游標的顏色。預設為黑色。

12

插入游標邊框寬度

插入游標周圍 3D 邊框的大小。預設為 0。

13

插入游標關閉時間

插入游標在閃爍週期中關閉的毫秒數。將此選項設定為零可抑制閃爍。預設為 300。

14

插入游標開啟時間

插入游標在閃爍週期中開啟的毫秒數。預設為 600。

15

插入游標寬度

插入游標的寬度(其高度由其所在行中最高的專案決定)。預設為 2 畫素。

16

水平內邊距

新增到文字區域左右兩側的內部填充大小。預設為 1 個畫素。

17

垂直內邊距

新增到文字區域上下兩側的內部填充大小。預設為 1 個畫素。

18

浮雕樣式

文字部件的 3D 外觀。預設為 relief=SUNKEN。

19

選中文字背景顏色

顯示選中文字時使用的背景顏色。

20

選中文字邊框寬度

選中文本週圍使用的邊框寬度。

21

行間距1

此選項指定在每行文字上方新增多少額外垂直空間。如果一行換行,則此空間僅在顯示器上佔據的第一行之前新增。預設為 0。

22

行間距2

此選項指定當邏輯行換行時,在顯示文字行之間新增多少額外垂直空間。預設為 0。

23

行間距3

此選項指定在每行文字下方新增多少額外垂直空間。如果一行換行,則此空間僅在顯示器上佔據的最後一行之後新增。預設為 0。

24

狀態

通常,文字部件會響應鍵盤和滑鼠事件;將 state 設定為 NORMAL 以獲得此行為。如果將 state 設定為 DISABLED,則文字部件將不會響應,並且您也無法以程式設計方式修改其內容。

25

製表符

此選項控制製表符字元如何定位文字。

26

寬度

部件的寬度(以字元為單位,而不是畫素!),根據當前字型大小測量。

27

換行

此選項控制過寬行的顯示。將 wrap 設定為 WORD,它將在最後一個適合的單詞之後換行。使用預設行為 wrap=CHAR,任何過長的行都將在任何字元處換行。

28

水平滾動命令

要使文字部件水平可滾動,請將此選項設定為水平捲軸的 set() 方法。

29

垂直滾動命令

要使文字部件垂直可滾動,請將此選項設定為垂直捲軸的 set() 方法。

方法

文字物件具有以下方法:

序號 方法及描述
1

delete(startindex [,endindex])

此方法刪除特定字元或一段文字。

2

get(startindex [,endindex])

此方法返回特定字元或一段文字。

3

index(index)

根據給定的索引返回索引的絕對值。

4

insert(index [,string]...)

此方法在指定的索引位置插入字串。

5

see(index)

如果位於索引位置的文字可見,則此方法返回 true。

文字部件支援三種不同的輔助結構:標記、製表符和索引。

標記用於在給定文字中兩個字元之間的位置新增書籤。在處理標記時,可以使用以下方法:

序號 方法及描述
1

index(mark)

返回特定標記的行和列位置。

2

mark_gravity(mark [,gravity])

返回給定標記的重力。如果提供了第二個引數,則為給定標記設定重力。

3

mark_names()

返回文字部件中的所有標記。

4

mark_set(mark, index)

通知給定標記的新位置。

5

mark_unset(mark)

從文字部件中刪除給定標記。

標籤用於將名稱與文字區域關聯,這使得修改特定文字區域的顯示設定變得容易。標籤還用於將事件回撥繫結到特定文字範圍。

以下是處理製表符的可用方法:

序號 方法及描述
1

tag_add(tagname, startindex[,endindex] ...)

此方法標記由 startindex 定義的位置,或由 startindex 和 endindex 位置界定的範圍。

2

tag_config

您可以使用此方法配置標籤屬性,包括:對齊方式(居中、左對齊或右對齊)、製表符(此屬性與文字部件製表符屬性的功能相同)和下劃線(用於對標記的文字新增下劃線)。

3

tag_delete(tagname)

此方法用於刪除給定標籤。

4

tag_remove(tagname [,startindex[.endindex]] ...)

應用此方法後,給定標籤將從提供的區域中刪除,而不會刪除標籤的實際定義。

示例

自己嘗試以下示例:

from tkinter import *
root = Tk()
text = Text(root)
text.insert(INSERT, "Hello.....")
text.insert(END, "Bye Bye.....")
text.pack()
text.tag_add("here", "1.0", "1.4")
text.tag_add("start", "1.8", "1.13")
text.tag_config("here", background="yellow", foreground="blue")
text.tag_config("start", background="black", foreground="green")
root.mainloop()

執行上述程式碼後,將產生以下結果:

tkinter text
python_gui_programming.htm
廣告