美文网首页
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