软件测试|超好用超简单的Python GUI库——tkinter(六)
  X7HGjGJ7MG9G 2023年11月02日 59 0

## 前言


之前我们介绍了entry控件,entry控件实际上更适用于输入用户名,密码等单行的文本,如果需要多行输入,tkinter提供了更便于多行文本输入的text控件。


Text 控件类似 HTML 中的<textarea>标签,允许用户以不同的样式、属性来显示和编辑文本,它可以包含纯文本或者格式化文本,同时支持嵌入图片、显示超链接以及带有 CSS 格式的 HTML 等。Text 控件的有很多的适用场景,比如显示某个产品的详细信息,或者人物介绍等。下面是对 Text 控件属性和常用方法做简单的介绍。


### 基本属性


|属性| 说明|

|--|--|

|autoseparators| 默认为 True,表示执行撤销操作时是否自动插入一个“分隔符”(其作用是用于分隔操作记录)|

|exportselection| 默认值为 True,表示被选中的文本是否可以被复制到剪切板,若是 False 则表示不允许。|

|insertbackground| 设置插入光标的颜色,默认为 BLACK|

|insertborderwidth| 设置插入光标的边框宽度,默认值为 0|

|insertofftime| 该选项控制光标的闪烁频频率(灭的状态)|

|insertontime| 该选项控制光标的闪烁频频率(亮的状态)|

|selectbackground| 指定被选中文本的背景颜色,默认由系统决定|

|selectborderwidth| 指定被选中文本的背景颜色,默认值是0|

|selectforeground| 指定被选中文本的字体颜色,默认值由系统指定|

|setgrid| 默认值是 False,指定一个布尔类型的值,确定是否启用网格控制|

|spacing1| 指定 Text 控件文本块中每一行与上方的空白间隔,注意忽略自动换行,且默认值为 0|

|spacing2| 指定 Text 控件文本块中自动换行的各行间的空白间隔,忽略换行符,默认值为0|

|spacing3| 指定 Text 组件文本中每一行与下方的空白间隔,忽略自动换行,默认值是 0|

|tabs| 定制 Tag 所描述的文本块中 Tab 按键的功能,默认被定义为 8 个字符宽度,比如 tabs=('1c', '2c', '8c') 表示前 3 个 Tab 宽度分别为 1厘米,2厘米,8厘米|

|undo| 该参数默认为 False,表示关闭 Text 控件的“撤销”功能,若为 True 则表示开启|

|wrap| 该参数用来设置当一行文本的长度超过 width 选项设置的宽度时,是否自动换行,参数值 none(不自动换行)、char(按字符自动换行)、word(按单词自动换行)|

|xscrollcommand| 该参数与 Scrollbar 相关联,表示沿水平方向上下滑动|

|yscrollcommand| 该参数与 Scrollbar 相关联,表示沿垂直方向左右滑动|



### 常用方法


|方法| 说明|

|--|--|

|bbox(index)| 返回指定索引的字符的边界框,返回值是一个 4 元组,格式为(x,y,width,height)|

|edit_modified()| 该方法用于查询和设置 modified 标志(该标标志用于追踪 Text 组件的内容是否发生变化)

|edit_redo()| “恢复”上一次的“撤销”操作,如果设置 undo 选项为 False,则该方法无效|

|edit_separator()| 插入一个“分隔符”到存放操作记录的栈中,用于表示已经完成一次完整的操作,如果设置 undo 选项为 False,则该方法无效|

|get(index1, index2)| 返回特定位置的字符,或者一个范围内的文字|

|image_cget(index, option) |返回 index 参数指定的嵌入 image 对象的 option 选项的值,如果给定的位置没有嵌入 image 对象,则抛出 TclError 异常|

|image_create()| 在 index 参数指定的位置嵌入一个 image 对象,该 image 对象必须是 Tkinter 的 PhotoImage 或 BitmapImage 实例|

|insert(index, text)| 在 index 参数指定的位置插入字符串,第一个参数也可以设置为 INSERT,表示在光标处插入,END 表示在末尾处插入|

|delete(startindex [, endindex])| 删除特定位置的字符,或者一个范围内的文字|

|see(index)| 如果指定索引位置的文字是可见的,则返回 True,否则返回 False|



### 实例


```python

from tkinter import *

win = Tk()

win.title("拜仁慕尼黑")


win.geometry('400x420')

# 创建一个文本控件

# width 一行可见的字符数;height 显示的行数

text = Text(win, width=50, height=30, undo=True, autoseparators=False)

# 适用 pack(fill=X) 可以设置文本域的填充模式。比如 X表示沿水平方向填充,Y表示沿垂直方向填充,BOTH表示沿水平、垂直方向填充

text.pack()

# INSERT 光标处插入;END 末尾处插入

text.insert(INSERT, '在拜仁,你甚至可以踢球!')

win.mainloop()

```


运行脚本生成的结果如下图:


![在这里插入图片描述](https://img-blog.csdnimg.cn/8a2ceb99ca6b4a13a20f06076d4159a2.png)


**撤销与恢复功能实现**


要实现撤销和恢复功能,我们需要使用上述的撤销和恢复功能,并且在界面上显示撤销和恢复功能的按钮,代码如下所示:


```python

from tkinter import *

win = Tk()

win.title("拜仁慕尼黑")


win.geometry('400x300')

# 创建一个文本控件

# width 一行可见的字符数;height 显示的行数

text = Text(win, width=50, height=20, undo=True, autoseparators=False)

text.grid()

# INSERT 光标处插入;END 末尾处插入

text.insert(INSERT, '在拜仁,你甚至可以踢球!')

# 定义撤销和恢复方法,调用edit_undo()和 edit_redo()方法

def backout():

   text.edit_undo()

def regain():

   text.edit_redo()

# 定义撤销和恢复按钮

Button(win,text = '撤销',command = backout).grid(row=3, column=0, sticky="w", padx=10, pady=5)

Button(win,text = '恢复',command = regain).grid(row=3, column=0, sticky="e", padx=10, pady=5)

win.mainloop()

```

程序运行结果:


![在这里插入图片描述](https://img-blog.csdnimg.cn/957404fe37b04375b74103268310f5a0.png)


### 总结


本文主要介绍了tkinter库的text控件的基本使用,后续我们将继续介绍text控件里特殊结构的使用。



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  cG0i4onRy7gH   2023年11月02日   61   0   0 控件Web数据
  gcyDPCYPU8Nr   2023年11月02日   59   0   0 qt控件2dJavaScript
X7HGjGJ7MG9G
最新推荐 更多