Tkinter教程之Text(2)篇

来源:互联网 发布:asp微商城源码 编辑:程序博客网 时间:2024/06/05 06:49
'''10.使用自定义mark对文本块添加tag'''# -*- coding: utf-8 -*-# tag_add方法的使用from tkinter import *root = Tk()t = Text(root)# 创建一个TAG,其前景色为蓝色t.tag_config('b', foreground='blue')for i in range(10):    t.insert(1.0, '0123456789\n')# 自定义两个mark,并使用它们来指定添加tag的文本块t.mark_set('ab', '3.1')t.mark_set('cd', END)t.tag_add('b', 'ab', 'cd')t.pack()root.mainloop()# 先向Text中添加了10行文本,创建两个mark('ab'和'cd'),将使用这两个tag指定文本的文本块使用此tag

'''11.使用indexes获得Text中的内容'''# -*- coding: utf-8 -*-# 分别使用内置的indexes和自定义mark来获取文本# get方法的使用from tkinter import *root = Tk()t = Text(root)for i in range(10):    t.insert(1.0, str(i) + ' 0123456789\n')# 获得1.0-2.3的文本print(t.get('1.0', '2.3'))# 自定义两个mark,并使用它们来获得文本块t.mark_set('ab', '3.1')t.mark_set('cd', END)print(t.get('ab', 'cd'))t.pack()root.mainloop()

'''12.测试delete对tag的影响'''# -*- coding: utf-8 -*-# delete方法不会对tag造成影响,也就是说删除文本与tag没有任何关系from tkinter import *root = Tk()t = Text(root)# 创建一个TAG,其前景色为蓝色t.tag_config('b', foreground='blue')for i in range(10):    t.insert(1.0, str(i) + ' 0123456789\n')# 自定义两个mark,并使用它们来指定添加tag的文本块t.mark_set('ab', '3.1')t.mark_set('cd', END)t.tag_add('b', 'ab', 'cd')# 删除(1.0 - 4.0)的文本t.delete('1.0', '4.0')t.pack()root.mainloop()# (1.0-4.0)的文本全部初始删除了,剩余的文本全部以蓝色显示,即还保留tag的属性

'''13.使用tag_delete对文本属性的影响'''# -*- coding: utf-8 -*-# 使用tag_delete方法操作tagfrom tkinter import *root = Tk()t = Text(root)# 创建一个TAG,其前景色为蓝色t.tag_config('b', foreground='blue')for i in range(10):    t.insert(1.0, str(i)+' 0123456789\n')# 自定义两个mark,并使用它们来指定添加tag的文本块t.mark_set('ab', '3.1')t.mark_set('cd', END)t.tag_add('b', 'ab', 'cd')# 删除tag 'b',注意这个操作是在tag_add之后进行的。t.tag_delete('b')t.pack()root.mainloop()# 结果所有的文本没有了tag('b')属性,即tag_delete会清除所有与此tag相关的属性,不论是之前还是之后

'''Tkinter教程之Text篇(3)''''''14.自定义tag的两个内置属性'''''# tag.first:tag之前插入文本,此文本不包含在这个tag中# tag.last:tag之后插入文本,此文本包含在这个tag中# -*- coding: utf-8 -*-# 使用tag的内置属性来插入文本from tkinter import *root = Tk()t = Text(root)# 创建一个TAG,其前景色为蓝色t.tag_config('b', foreground='blue')for i in range(10):    t.insert(1.0, str(i) + ' 0123456789\n')# 自定义两个mark,并使用它们来指定添加tag的文本块t.mark_set('ab', '3.1')t.mark_set('cd', END)t.tag_add('b', 'ab', 'cd')# 删除tag 'b',注意这个操作是在tag_add之后进行的。# 在tag('b')之前插入'first't.insert('b.first', 'first')# 在tag('b')之后插入'last't.insert('b.last', 'last')t.pack()root.mainloop()# 注意:first没有使用tag('b')属性,last使用了tag('b')属性

'''15.在Text中创建按钮'''# -*- coding: utf-8 -*-# 使用window_create在Text内创建一widgetfrom tkinter import *root = Tk()t = Text(root)for i in range(10):    t.insert(1.0, '0123456789 ')def printText():    print('buttin in text')bt = Button(t, text='button', command=printText)# 在Text内创建一个按钮t.window_create('2.0', window=bt)# 没有调用pack()# bt.pack()t.pack()root.mainloop()# 注意:使用window_create,而不是使用insert('2.0',bt);pack()也不用调用;# 点击这个按钮,打印出'button in text',证明这个按钮是可以正常工作的。

'''16.在Text中创建一个图像(未实现)'''# -*- coding: utf-8 -*-# 使用window_create在Text内创建一widgetfrom tkinter import *root = Tk()t = Text(root)for i in range(10):    t.insert(1.0, '0123456789\n')# 分别使用BitmapImage和PhotoImage进行测试,均没有显示出图像???# bm = BitmapImage('gray75')bm = PhotoImage('d:/1.png')# 在Text内创建一个图像t.image_create('2.0', image=bm)print(t.image_names())# 打印的图像名称都是正确的t.pack()root.mainloop()# 按照手册中的说明未实现这种效果,原因不知。

'''17.绑定tag与事件'''# -*- coding: utf-8 -*-# 使用tag_bind方法from tkinter import *root = Tk()t = Text(root)for i in range(10):    t.insert(1.0, '0123456789\n')# 创建一个tagt.tag_config('a', foreground='blue', underline=1)# Enter的回调函数def enterTag(event):    print('Enter event')# 绑定tag('a')与事件('<Enter>')t.tag_bind('a', '<Enter>', enterTag)t.insert(2.0, 'Enter event ', 'a')t.pack()root.mainloop()# 注意:使用tag_bind绑定tag与事件,当此事件在tag上发生时便就会调用这个tag的回调函数# 因为使用了Enter事件,此事件含有一个参数,故将enterTag加了一个参数,程序中不使用此参数

'''18.使用edit_xxx实现编辑常用功能(未实现)'''# -*- coding: utf-8 -*-# 使用edit_xxx函数实现编辑常用功能from tkinter import *root = Tk()t = Text(root)for i in range(10):    t.insert(1.0, '0123456789\n')t.pack()# 定义回调函数# 撤消回调函数def undoText():    t.edit_undo()# 插入文本函数def insertText():    t.insert(1.0, 'insert text')Button(root, text='undo', command=undoText).pack(fill=X)Button(root, text='insert text', command=insertText).pack(fill=X)root.mainloop()# 这个edit_undo方法也是不起作用,不知为何???

0 0
原创粉丝点击