在本文中,将介绍如何使用 tkinter Text 多行文本框小部件向应用程序添加文本编辑器。
Text 小部件允许显示和编辑多行文本,还支持嵌入图像和链接。
要创建多行文本框,请使用以下构造函数:
text = tk.Text(master, **option)
创建多行文本框以下示例中,使用 Text 多行文本框小部件,在窗口上创建一个可以输入 10 行的文本框。
import tkinter as tkroot = 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 tkroot = 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 tkroot = 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 tkfrom tkinter.messagebox import showinforoot = 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 tkroot = 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
所选文本周围的边框宽度。