Tkinter Text文本框组件简介

Text文本框组件是tkinter中最常用的组件之一,是比较复杂的组件,一般用于展示多行文本。单行文本通常使用Entry输入框组件

Text文本框组件类型网页中的富文本编辑框,不仅可以编辑文字,还可以设置文字颜色,插入超链接等。Text文本框组件是tk中的组件,在ttk中没有对其重新实现。

常用属性

属性名 说明
background 背景颜色
fg 前景色 文字的颜色
bd 组件边框宽度。默认是2像素。
selectbackground 选择文字时的背景色
xscrollcommand 设置水平滚动条
yscrollcommand 设置垂直滚动条
insertbackground 输入框内光标的颜色
insertofftime 光标闪烁时 消失持续时间 默认300
insertontime 光标闪烁时 显示持续时间 默认600
insertwidth 光标宽度 默认2像素
spacing1 每个段落的行高 默认0
spacing2 一个段落内的行高(没有回车,超过行宽换行的情况) 默认0
spacing3 段落底部,如果有换行在最后一行添 默认0
state 文本框状态,默认NORMAL DISABLED(禁用)

常用方法

属性名 说明
delete(startindex, [,endindex]) 删除范围内字符,或删除指定字符
get(startindex, [,endindex]) 获取文本内容,获取范围内的文本内容
insert(index, [,string]) 在指定位置插入文本
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import tkinter as tk

win = tk.Tk()
win.geometry("500x300")

txt = tk.Text(selectbackground="red", insertbackground="blue", spacing2=10, bd=0)
txt.pack(fill=tk.BOTH, expand=True)
txt.insert(tk.END, "在最后插入一段内容\r\n")
for i in range(1, 10):
    for j in range(1, i + 1):
        txt.insert(tk.END, f"{j}x{i}={i * j} ")
    txt.insert(tk.END, "\r\n")

win.mainloop()

Text组件示例 Text组件示例

文本框标签相关方法

属性名 说明
tag_add(tagName, index1,index2) 给指定范围内的文本添加标签
tag_bind(tagName,sequence,func) 给标签绑定事件
tag_unbind(tagName,sequence) 取消标签绑定的事件
tag_configure(tagName) 标签选项配置
tag_delete(tagNames) 删除标签
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
from tkinter import *
from webbrowser import open as webopen

win = Tk()
win.geometry('500x300')

text = Text(win)

text.tag_configure('link', foreground='blue', underline=True)
# 第三个额外参数会作为这段文本的标签
text.insert(END, 'pytk.net\r\n', 'link')
text.insert(END, "我是第二行,根据索引设置链接")

# 文字索引 行.列
text.tag_add("link", "2.12", "2.15")

# 为link标签绑定点击事件
text.tag_bind('link', '<Button-1>', lambda evt: webopen('www.pytk.net'))
text.pack(fill=BOTH)

win.mainloop()

文本框标签演示 文本框标签演示

嵌入图片和组件

这个功能还是挺强大的,可以在文本框内嵌入图片和组件,但是能用到的场景比较少。

属性名 说明
image_create 在文本框嵌入图片
window_create 在文本框嵌入组件
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from tkinter import *
from tkinter.ttk import *

from PIL import Image, ImageTk

win = Tk()
win.geometry('500x300')

text = Text(win, bg="#fff")
text.insert(END, "插入一个图片")

img = Image.open("img.png")
img = img.resize((40, 40))
img = ImageTk.PhotoImage(img)
text.image_create(END, image=img)

# 嵌入按钮
text.window_create(END, window=Button(text="嵌入按钮"))
text.window_create(END, window=Label(text="嵌入标签"))
lsbox = Listbox()
lsbox.insert(END, "嵌入列表框")
text.window_create(END, window=lsbox)
ipt = Entry()
ipt.insert(END, "嵌入输入框")
text.window_create(END, window=ipt)

text.pack(fill=BOTH, expand=True)

win.mainloop()

文本框嵌入窗体 文本框嵌入窗体

站长微信
请备注来意
二维码