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
广告