#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
网友评论