1. 常用功能介绍
tkinter中Text模块有很多功能,最常用的有
insert:插入信息
get:获取信息
delet:删除信息
window_creat:创建新窗口
tag_add:为指定的文本添加Tags
tag_config:设置Tags的样式
tag_bind:绑定事件
2. 示例
2.1 示例程序
为了展示上述功能,编写如下程序:
from tkinter import *
import webbrowser
from tkinter import messagebox
class Application(Frame):
def __init__(self,master=None):
super().__init__(master)
self.master = master
self.pack()
self.creatWidget()
def creatWidget(self):
self.w1 = Text(self, width=80, heigh=40, bg='gray') # 宽度为80个字母(40个汉字),高度为1个行高
self.w1.pack()
self.w1.insert(1.0, "123456\n789012") # 在第1行第0列插入
self.w1.insert(2.3, "锄禾日当午\n")
# 创建诸多按钮,command表示按下按钮后执行的事件(方法)
Button(self, text="重复插入文本", command=self.insertText).pack(side="left")
Button(self, text="返回文本", command=self.returnText).pack(side="left")
Button(self, text="添加图片", command=self.addImage).pack(side="left")
Button(self, text="添加组件", command=self.addWidget).pack(side="left")
Button(self, text="通过tag精确控制文本", command=self.testTag).pack(side="left")
# 插入信息
def insertText(self):
# INSERT索引表示:在光标处插入字符“SZ”
self.w1.insert(INSERT, "SZ")
# END索引号表示:在最后插入字符“【sxt】”
self.w1.insert(END, "[sxt]")
# 返回信息
def returnText(self):
# Indexes(索引):用来指向Text组件中文本的位置,Text的组件索引也是对应实际字符之间的位置
# 行号以1开始,列号以0开始
print(self.w1.get(1.2,1.6)) # 获取第1行2列开始至1行6列之间的内容
messagebox.showinfo("返回的文本", self.w1.get(1.2, END)) # 弹出一个窗口,显示从第1行2列至文末所有内容
print("所有文本内容:\n", self.w1.get(1.0, END))
messagebox.showinfo("所有的文本", self.w1.get(1.0, END))
# 添加图片
def addImage(self):
# globe photo
self.photo = PhotoImage(file="2.gif")
self.w1.image_create(END, image=self.photo)
def addWidget(self):
b1 = Button(self.w1, text="BIT")
# 在text创建组件的命令
self.w1.window_create(INSERT, window=b1)
def testTag(self):
self.w1.delete(1.0, END) # 将第1行第0列到结尾的内容删除
self.w1.insert(INSERT, "好好学习\n天天向上\n") # 插入
self.w1.tag_add("good", 1.0, 2.9) # 区域名:"good",区域:第一行第0列---->第2行第9列
self.w1.tag_config("good", background="yellow", foreground="red") # 设置"good"区域背景和前景颜色
self.w1.insert(3.0, "点击进入百度") # 在第3行第0列插入
self.w1.tag_add("baidu", 3.0, END) # 第3行第0列至文本框最后的区域取名为"baidu"
self.w1.tag_config("baidu", underline=True) # 给"baidu"区域加下划线
self.w1.tag_bind("baidu", "<Button-1>", self.webShow) # 给"baidu"区域绑定事件
def webShow(self,event):
webbrowser.open("www.baidu.com") # 打开百度网页
if __name__ == '__main__':
root = Tk()
root.geometry("800x600")
root.title("测试")
app = Application(root)
root.mainloop()
2.2 仿真结果
2.2.1 主页面
2.2.2 重复插入文本结果
将光标定位在9后面,点击两次重复插入文本,结果显示如下:
2.2.3 返回文本结果
2.2.4 添加图片结果
2.2.5 添加组件结果
每点击一次插入一个BIT按钮
2.2.6 Tag键
点击“点击进入百度”会打开默认浏览器,进入www.baidu.com
以上就是tkinter中Text模块的所有内容