12 Text 组件
Tkinter 是 Python 的标准 GUI 库,而 Text 组件是其中用于显示和编辑多行文本的控件。以下是对 Text 组件的详细说明和一个使用案例。
Text 组件属性
基本属性
- width: 文本框的宽度,通常以字符数为单位。
- height: 文本框的高度,以行数为单位。
- wrap: 指定文本换行的方式,可以是 “word”(单词换行)、“char”(字符换行)或 “none”(不自动换行)。
文本操作
- insert(index, text, tags=None): 在指定位置插入文本。
- delete(index1, index2=None): 删除指定范围的文本。
- get(index1, index2=None): 获取指定范围的文本。
标签(Tags)
- tag_add(tagName, index1, index2=None): 给指定范围的文本添加标签。
- tag_config(tagName, **options): 配置标签的属性,如颜色、字体等。
- tag_remove(tagName, index1, index2=None): 移除指定范围文本的标签。
滚动条
- xscrollcommand: 与水平滚动条关联的回调函数。
- yscrollcommand: 与垂直滚动条关联的回调函数。
使用案例
这段代码是一个使用Tkinter库创建的简单文本编辑器界面,其中包含一个文本框和一个垂直滚动条。下面是详细注释:

import tkinter as tk   # 导入tkinter模块,并简称为tk
def create_text_widget(root):   # 定义一个函数,用于创建文本框和滚动条
     # 创建文本框
     text = tk.Text(root, width=50, height=10, wrap="word")   # 创建Text组件,设置宽度为50字符,高度为10行,文本自动换行
     text.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)   # 将Text组件放置在窗口左侧,让它填充并扩展
     # 创建滚动条
     scroll_bar = tk.Scrollbar(root, command=text.yview)   # 创建Scrollbar组件,设置其命令为Text组件的yview方法,用于控制垂直滚动
     scroll_bar.pack(side=tk.RIGHT, fill=tk.Y)   # 将滚动条放置在窗口右侧,并让它填充整个Y轴空间
     # 绑定滚动条
     text.config(yscrollcommand=scroll_bar.set)   # 配置Text组件的yscrollcommand属性,使其与滚动条关联
     # 向文本框插入文本
     text.insert(tk.END, "你好,Tkinter文本控件!\n")   # 在文本框末尾插入文本
     text.insert(tk.END, "这是一个简单的文本小部件示例。\n")   # 继续在文本框末尾插入更多文本
     # 添加标签,改变文本颜色
     text.tag_add("highlight", "1.0", "1.30")   # 为文本框中从第1行到第30个字符的文本添加"highlight"标签
     text.tag_config("highlight", foreground="red")   # 设置"highlight"标签的前景色为红色
     return text   # 返回创建的Text组件实例
# 创建主窗口
root = tk.Tk()   # 创建Tkinter的主窗口实例
root.title("Text Widget Example")   # 设置窗口标题
# 创建文本框
text_widget = create_text_widget(root)   # 调用函数创建文本框,并将其赋值给text_widget变量
# 运行主循环
root.mainloop()   # 启动Tkinter事件循环,显示窗口并等待用户操作
这段代码首先导入了tkinter模块,并定义了一个函数create_text_widget,该函数负责创建一个文本框和一个垂直滚动条,并将它们放置在窗口中。文本框允许用户输入和编辑文本,并且当文本超出当前视图时,用户可以通过滚动条来查看隐藏的文本部分。此外,代码还演示了如何给特定文本添加样式(在这个例子中是改变颜色)。最后,通过调用root.mainloop()启动了Tkinter的事件循环,这使得窗口保持打开状态,等待用户的交互操作。



















