前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tkinter -- Text (2)

tkinter -- Text (2)

作者头像
py3study
发布2018-08-03 10:31:03
6140
发布2018-08-03 10:31:03
举报
文章被收录于专栏:python3python3

使用 tag 来指定文本的属性

创建一个指定背景颜色的 TAG

代码:

代码语言:javascript
复制
import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
# 创建一个 TAG,其前景色为红色
t.tag_config('a', foreground='red')

# 使用 TAG 'a'来指定文本属性
t.insert(1.0, '123456789', 'a')
t.pack()
root.mainloop()

效果:

blob.png
blob.png

结果是文本颜色改变为红色了

同时使用两个文本指定同一个属性

没有特别设置的话,最后创建的那个会覆盖掉其它所有的设置

代码:

代码语言:javascript
复制
import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
# 创建一个 TAG,其前景色为红色
t.tag_config('a', foreground='red')
t.tag_config('b', foreground='blue')

# 使用 TAG 'a'和'b'来指定文本属性
t.insert(1.0, '123456789', ('b', 'a'))
t.pack()

结果:

blob.png
blob.png

结果是文本的颜色不是按照 insert 给定的顺序来设置,而是按照 tag 的创建顺序来设置的

控制 tag 的级别

代码:

代码语言:javascript
复制
import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
# 创建一个 TAG,其前景色为红色
t.tag_config('a', foreground='red')
t.tag_config('b', foreground='blue')

# 使用 tag_lower 来降低 b 的级别
t.tag_lower('b')

# 使用 TAG 'a'和'b'来指定文本属性
t.insert(1.0, '123456789', ('b', 'a'))
t.pack()
root.mainloop()

结果:

blob.png
blob.png

结果:文本内容颜色变为了红色,蓝色的作用级别小于红色了,即使是先创建了红色

对文本块添加 tag

tag_add 方法的使用

代码:

代码语言:javascript
复制
import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
# 创建一个 TAG,其前景色为蓝色
t.tag_config('b', foreground='blue')

# 使用 tag_lower 来降低 b 的级别
t.tag_lower('b')

# 使用 TAG 'b'来指定文本属性
for i in range(10):
    t.insert(1.0, '123456789\n')
t.tag_add('b', '2.5', '2.end')
t.pack()
root.mainloop()

效果:

blob.png
blob.png

先向 Text 中添加了10行文本,创建一 tag,将第2行第6个至第二行行尾使用此 tag

使用自定义 mark 对文本块添加 tag

代码:

代码语言:javascript
复制
import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
# 创建一个 TAG,其前景色为蓝色
t.tag_config('b', foreground='blue')

# 使用 tag_lower 来降低 b 的级别
t.tag_lower('b')

# 使用 TAG 'b'来指定文本属性
for i in range(10):
    t.insert(1.0, '123456789\n')

# 自定义两个 mark,并使用它们来指定添加 tag 的文本块
t.mark_set('ab', '3.1')
t.mark_set('cd', tk.END)
t.tag_add('b', 'ab', 'cd')
t.pack()
root.mainloop()

结果:

blob.png
blob.png

先向 Text 中添加了10行文本,创建两个 mark('ab'和'cd'),将使用这两个 tag 指定文本的文本块使用此 tag

使用 indexes 获得 Text 中的内容

分别使用内置的 indexes 和自定义 mark 来获取文本

get 方法的使用

代码:

代码语言:javascript
复制
import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
# 创建一个 TAG,其前景色为红色
t.tag_config('a', foreground='red')

# 使用 TAG 'b'来指定文本属性
for i in range(10):
    t.insert(1.0, '123456789\n', 'a')

# 获得1.0-2.3的文本
print(t.get('1.0', '2.3'))

# 自定义两个mark,并使用它们来获得文本块
t.mark_set('ab', '3.1')
t.mark_set('cd', tk.END)
print(t.get('ab', 'cd'))
t.pack()
root.mainloop()

结果:

blob.png
blob.png

测试 delete 对 tag 的影响

delete 方法不会对 tag 造成影响,也就是说删除文本与 tag 没有任何关系

代码:

代码语言:javascript
复制
import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
# 创建一个 TAG,其前景色为红色
t.tag_config('a', foreground='red')

# 使用 TAG 'b'来指定文本属性
for i in range(10):
    t.insert(1.0, '123456789\n', 'a')

# 自定义两个mark,并使用它们来获得文本块
t.mark_set('ab', '3.1')
t.mark_set('cd', tk.END)
t.tag_add('b', 'ab', 'cd')

# 删除(1.0 - 4.0)的文本
t.delete('1.0', '4.0')
t.pack()
root.mainloop()

效果:

blob.png
blob.png

(1.0-4.0)的文本全部初始删除了,剩余的文本全部以红色显示,即还保留 tag 的属性

使用 tag_delete 对文本属性的影响

代码:

代码语言:javascript
复制
import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
# 创建一个 TAG,其前景色为红色
t.tag_config('a', foreground='red')

# 使用 TAG 'b'来指定文本属性
for i in range(10):
    t.insert(1.0, '123456789\n', 'a')

# 自定义两个mark,并使用它们来获得文本块
t.mark_set('ab', '3.1')
t.mark_set('cd', tk.END)
t.tag_add('a', 'ab', 'cd')

# 删除 tag 'a',注意这个操作时在tag_add之后执行的
t.tag_delete('a')
t.pack()
root.mainloop()

结果:

blob.png
blob.png

结果所有的文本没有了 tag('a')属性,即 tag_delete 会清除所有与此 tag 相关的属性,不论是之前还是之后

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-06-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档