在本文中,将介绍如何使用 tkinter Text 多行文本框小部件向应用程序添加文本编辑器。
Text 小部件允许显示和编辑多行文本,还支持嵌入图像和链接。
要创建多行文本框,请使用以下构造函数:
text = tk.Text(master, **option)
创建多行文本框
以下示例中,使用 Text 多行文本框小部件,在窗口上创建一个可以输入 10 行的文本框。
import tkinter as tk
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Text 多文本框演示')
text = tk.Text(root, height=10, font=("Arial", 20))
text.pack(padx=10, pady=10)
root.mainloop()
使用多行文本框显示文字
要在多行文本框显示文字,可以使用 insert() 方法。此方法在指定的索引位置插入字符串。
语法格式:
text.insert(index, string)
示例:
import tkinter as tk
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Text 多文本框演示')
text = tk.Text(root, height=10, font=("Arial", 20))
text.pack(padx=10, pady=10)
text.insert(tk.INSERT, '信息科技云课堂\nPython之家')
root.mainloop()
还可以使用标签设置文本格式,可以定义任意数量的标记,同一个 Tag 可以用于多个不同的范围。
以下代码定义了 a、b 两个 Tag,分别为字符串“信息”和“Python”设置不同的样式。
import tkinter as tk
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Text 多文本框演示')
text = tk.Text(root, height=10, font=("Arial", 20))
text.pack(padx=10, pady=10)
text.insert(tk.INSERT, '信息科技云课堂\nPython之家')
text.tag_add("a", "1.0", "1.2")
text.tag_add("b", "2.0", "2.6")
text.tag_config("a", background = "yellow", foreground = "blue")
text.tag_config("b", background = "black", foreground = "green")
root.mainloop()
要防止文本框的内容被修改,可以通过将参数设置禁用编辑。
text['state'] = 'disabled'
要重新启用编辑,可以设置以下参数。
text['state'] = 'normal'
读取多行文本框的内容
要读取多行文本框的内容,使用 get() 方法。
text_content = text.get('1.0','end')
该方法接受两个参数。第一个参数是起始位置,第二个参数是结束位置。
import tkinter as tk
from tkinter.messagebox import showinfo
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Text 多文本框演示')
def Take_input():
msg = text.get("1.7", "end")
showinfo(title='欢迎访问', message=msg)
text = tk.Text(root, height=10, font=("Arial", 20))
text.pack(padx=10, pady=10)
text.insert(tk.INSERT, '信息科技云课堂Python之家')
Display = tk.Button(root, height = 2, width = 20, text ="读取", command = lambda:Take_input())
Display.pack()
root.mainloop()
text.get("1.0", "end - 1 chars")
上面的代码返回所有文本,但最后一个换行符除外。
text.get("1.0", "end - 1 lines")
上述代码返回所有文本,但最后一行除外。
text.get("1.0", "1.0 lineend")
上述代码返回文本的第一行。
text.get("1.0", "1.0 + 3 lines")
上述代码返回文本的前三行。
删除多行文本框的内容
要读取多行文本框的内容,使用 delete() 方法。
text_content = text.delete('1.0','end')
与 get() 方法类似,该方法接受两个参数。第一个参数是起始位置,第二个参数是结束位置。
使用多行文本框显示图像
要使用多行文本框显示图像,使用 image_create() 方法。
import tkinter as tk
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Text 多文本框演示')
text = tk.Text(root, height=10, font=("Arial", 20))
text.pack(padx=10, pady=10)
photo=tk.PhotoImage(file='logo.png')
text.image_create(tk.INSERT, image=photo)
text.insert(tk.INSERT, 'Python之家')
root.mainloop()
Text 多行文本框小部件选项
参数 | 说明 |
---|---|
bd | 边框宽度。 |
bg | 背景颜色。 |
exportselection | 导出窗口管理器选定的文本。默认值为0。 |
cursor | 鼠标指针类型。 |
font | 文本的字体。 |
fg | 文本颜色。 |
height | 垂直尺寸,行数。 |
highlightbackground | 高亮背景颜色。 |
higlightthickness | 高亮宽度,默认值为 1。 |
highlightcolor | 高亮颜色。 |
insertbackground | 插入光标的颜色。 |
padx | 水平填充。 |
pady | 垂直填充。 |
relief | 边框类型。 |
state | 设置为 DISABLED,则对鼠标和键盘无响应。 |
tabs | 使用制表符定位文本。 |
width | 组件的宽度,以字符为单位。 |
wrap | 自动换行。 |
xscrollcommand | 水平滚动。 |
yscrollcommand | 垂直滚动。 |
spacing1 | 文本每行上方插入的垂直间距。 |
spacing2 | 逻辑换行时,文本行之间添加额外的垂直间距。默认值为 0。 |
spacing3 | 文本每行下方插入的垂直间距。 |
selectbackground | 所选文本的背景色。 |
selectborderwidth | 所选文本周围的边框宽度。 |