(Python)tkinter中Text(多行文本框)控件

常用功能介绍

tkinter中Text模块有很多功能,最常用的有
insert:插入信息
get:获取信息
delet:删除信息
window_creat:创建新窗口
tag_add:为指定的文本添加Tags
tag_config:设置Tags的样式
tag_bind:绑定事件

示例程序如下

为了展示上述功能,编写如下程序:

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()

仿真结果

主页面

在这里插入图片描述

重复插入文本结果

将光标定位在9后面,点击两次重复插入文本,结果显示如下:
在这里插入图片描述

返回文本结果

在这里插入图片描述

添加图片结果

在这里插入图片描述

添加组件结果

每点击一次插入一个BIT按钮
在这里插入图片描述

Tag键

在这里插入图片描述
点击“点击进入百度”会打开默认浏览器,进入www.baidu.com

以上就是tkinter中Text模块的所有内容,如果对你有所帮助,请点赞哦!

猜你喜欢

转载自blog.csdn.net/weixin_45727931/article/details/107855472