Python Tkinter组件之Text
复习回顾
观察一下,个人介绍栏与其他栏除了形状大小的区别之外,还有什么区别?
我们带着疑问,开启本期将学习Python Tkinter组件支持多文本输入框的Text组件相关属性及方法学习,Let's go
1. Text 组件概述
Text 多行文本框,用来接收多行文本
-
当成“富文本”编辑页面,需要输入大量字符串等场景
-
可以显示网页链接、图片、HTML页面,甚至CSS样式,添加组件等
Text 语法格式如下:
Txt = Text(master,Options)
2. Text 与 Entry 对比
Entry 和 Text 是Python Tkinter的标准组件,都是可接收用户输入的输入框组件。
-
相同点
- Entry 与 Text 都提供get()方法来获取文本框中的内容
- Entry 与 Text 都提供insert()方法来改变文本框中的内容
- Entry 与 Text 都支持索引
-
不同点
- Entry 支持单行输入,Text支持多行输入
- Entry 不支持添加不同的格式,Text可以为不同部分添加不同的格式
- Entry 的索引写法简单如(3,8)表示第4个字符到第8个字符,Text 的索引需要同时指定行号和列号(1.3,2.6)表示第1行第4个字符,到第2行第7个字符
- Entry 支持双向绑定,可以将Entry与变量绑定在一起吗,也可以通过变量来改变、获取Entry组件中的内容;Text则不支持,只能与变量进行绑定
3. Text 组件常见属性
属性 | 含义 |
---|---|
height | 设置文本框的高度,高度值每加1则加一行 |
width | 设置文本框的宽度,宽度值每加1则加一个字节 |
insert | 文本框插入数据,可以指定插入数据的位置 |
delete | 删除文本框中的数据,可以通过数据位置,指定删除的数据 |
get | 获取文本框中的数据,可以通过数据位置,指定获取的数据 |
relief | 文本框样式,设置控件显示效果,可选的有:FLAT、SUNKEN、RAISED、GROOVE、RIDGE。 |
bd | 设置文本框的边框大小,值越大边框越宽 |
bg | 设置文本框默认背景色 |
fg | 设置文本框默认前景色,即字体颜色 |
font | 文本字体,文字字号,文字字形。字形有overstrike/italic/bold/underline |
state | 文本框状态选项,状态有DISABLED/NORMAL,DISABLED状态文本框无法输入,NORMAL状态可以正常输入 |
highlightcolor | 设置文本框点击后的边框颜色 |
highlightthickness | 设置文本框点击后的边框大小 |
4. Text 组件提供常用方法
方法 | 作用 |
---|---|
bbox(index) | 显示指定的字符屏幕区域 |
compare(index1,op,index2) | 比较两个位置的字符是否满足指定关系 |
count(index1,index2) | 计算指定位置间距离 |
delete(index) | 删除指定字符串 |
dlineinfo(index) | 返回指定位置的行占用区域 |
dump(index) | 转存指定位置的内容 |
edit(*args) | 在指定位置编辑内容 |
edit_modified() | 编辑修改内容 |
edit_redo() | 撤销编辑的内容 |
get(index) | 获取指定位置的内容 |
image_cget() | 获取嵌入的图像的内容 |
image_names() | 获取图像的名字 |
insert(index,chars) | 插入新内容到指定的位置 |
mark_names | 标记信息 |
peer_names | 创建查询组件的名字 |
search(pattern,index) | 在指定范围内查询内容 |
window_create(index) |
5. 小试牛刀
Text相关方法练习效果如下:
-
创建Text 组件对象,可以通过Option设置其属性。
例如创建一个背景颜色为粉色的Text组件
self.txt = Text(root,width = 40,height = 12,bg ="pink")
-
Text组件可以支持添加多行本,可以使用insert()方法添加多行字符
def insertText(self): self.txt.insert(INSERT,'小可爱') self.txt.insert(END,'celebrating')
-
Text组件支持添加图片,可以使用image_create()
def addImage(self): self.photo = PhotoImage(file = "heart.gif") self.txt.image_create(END,image = self.photo)
-
Text组件添加其他组件,使用window_create()方法
def addWidget(self): b1 = Button(self.txt,text = "盆友圈") self.txt.window_create(INSERT,window = b1)
-
Text组件清空字符串,可以使用delete()方法
def resetText(self): self.txt.delete(1.0,END)
📣 INSET 表示光标位置,END 将光标移到文本末尾
-
使用GUI面向对象编程写法,使用Application(Frame)来创建实例对象,创建组件的方法封装给createWidgetText()方法,通过构造函数创建好组件
-
最后完整代码如下:
总结
本期,我们又学习Tkinter组件之文本输入框
- Entry单行文本框常用于登陆界面用户命名、密码等表单填写场景
- Text 多行文本框一般被用来作为富文本来使用,支持多种文本格式
在工作场景需要接收用户输入的字符串,我们可以按照输入内容多少来选择使用Entry和Text组件,同时它们也提供对文本进行删除、修改、插入等方法。
以上是本期内容,欢迎大佬们点赞评论指正,下次见~ღ( ´・ᴗ・` )比心🌹
转载自:https://juejin.cn/post/7000286257351753735