Tkinter教程之Text(2)篇

'''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方法操作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之后进行的。
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内创建一widget
from 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内创建一widget
from 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')
# 创建一个tag
t.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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值