美文网首页
GUI中Text组件

GUI中Text组件

作者: Chaweys | 来源:发表于2021-01-09 17:01 被阅读0次

#coding=utf-8
from tkinter import *
import webbrowser

class Application(Frame):
    def __init__(self,master):
        Frame.__init__(self,master)
        self.master=master
        self.pack()
        self.createWidget()


    def createWidget(self):
        self.w1=Text(self,width=50,height=12,bg="gray")
        self.w1.pack()

        '''
        Text组件行是从1开始,列是从0开始
        '''
        self.w1.insert(1.0,"123456\nabcdefg")                                    #在第一行第一列的位置插入"123456换行abcdefg"
        self.w1.insert(2.3,"锄禾日当午,旱汗滴禾下土,谁知盘中餐,粒粒皆辛苦\n") #在第二行第4列的位置插入该首诗


        #创建各个按钮组件,#pack(side="left")表示不按照默认的垂直排列了,以左对齐方式排列
        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 表示在光标处插入
        self.w1.insert(INSERT,"ZhuHui")
        #END 表示在文本结尾处插入
        self.w1.insert(END,"\nHuDeChao")

    def returnText(self):
        '''
        核心:行号从1开始,列号从0开始
        '''
        #返回第二行第二列到第六列,包头不包尾
        res=self.w1.get(2.1,2.6)
        resall=self.w1.get(1.0,END)
        print(res)
        print("所有文本内容:",resall)

    def addImage(self):
        self.photo=PhotoImage(file="./imgs/logo.gif")
        self.w1.image_create(END,image=self.photo)

    def addWidget(self):
        #因为是在Text组件中再创建一个按钮组件,所以传入的master对象得是Text的对象self.w1,而不是Tk()的对象
        b1=Button(self.w1,text="爱尚学堂")
        #在Text组件中插入组件固定方法:window_create(INSERT,window=b1) INSERT表示在光标处插入,window为传入的组件名
        self.w1.window_create(INSERT,window=b1)

    def testTag(self):
        #删除所有文本
        self.w1.delete(1.0,END)
        #再次插入文本
        self.w1.insert(INSERT, "good good study,day day up!\n北京尚学堂\n百战程序员\n百度,搜一下就知道")

        #对选定文本添加标记:从第1行第1列到第1行第9列,对标记命名一个名称:good-可任意命名
        self.w1.tag_add("good",1.0, 1.9)
        #对设置的标签tag设置属性:背景色:黄色,字体色:红色
        self.w1.tag_config("good",background="yellow",foreground="red")


        self.w1.tag_add("百度",4.0,4.2)
        #对设置的标签tag设置属性:添加下划线
        self.w1.tag_config("百度",underline=True)
        #对设置的标签tag绑定事件:单击事件,然后调用self.webshow方法
        self.w1.tag_bind("百度","<Button-1>",self.webshow)


    def webshow(self,event):
        webbrowser.open("http://www.baidu.com")





if __name__=="__main__":
    root=Tk()
    root.title("Text文本组件")
    root.geometry("500x300+300+250")
    app=Application(root)
    root.mainloop()
Text组件1.png
Text组件2-插入文本.png
Text组件3-返回文本.png
Text组件4-添加图片.png
Text组件5-添加按钮组件.png
Text组件6-添加tag标签.png

相关文章

网友评论

      本文标题:GUI中Text组件

      本文链接:https://www.haomeiwen.com/subject/kowcaktx.html