发布时间:2018-06-06 21:54:38编辑:Run阅读(4452)
使用 tag 来指定文本的属性
创建一个指定背景颜色的 TAG
代码:
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()
效果:
结果是文本颜色改变为红色了
同时使用两个文本指定同一个属性
没有特别设置的话,最后创建的那个会覆盖掉其它所有的设置
代码:
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()
结果:
结果是文本的颜色不是按照 insert 给定的顺序来设置,而是按照 tag 的创建顺序来设置的
控制 tag 的级别
代码:
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()
结果:
结果:文本内容颜色变为了红色,蓝色的作用级别小于红色了,即使是先创建了红色
对文本块添加 tag
tag_add 方法的使用
代码:
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()
效果:
先向 Text 中添加了10行文本,创建一 tag,将第2行第6个至第二行行尾使用此 tag
使用自定义 mark 对文本块添加 tag
代码:
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()
结果:
先向 Text 中添加了10行文本,创建两个 mark('ab'和'cd'),将使用这两个 tag 指定文本的文本块使用此 tag
使用 indexes 获得 Text 中的内容
分别使用内置的 indexes 和自定义 mark 来获取文本
get 方法的使用
代码:
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()
结果:
测试 delete 对 tag 的影响
delete 方法不会对 tag 造成影响,也就是说删除文本与 tag 没有任何关系
代码:
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()
效果:
(1.0-4.0)的文本全部初始删除了,剩余的文本全部以红色显示,即还保留 tag 的属性
使用 tag_delete 对文本属性的影响
代码:
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()
结果:
结果所有的文本没有了 tag('a')属性,即 tag_delete 会清除所有与此 tag 相关的属性,不论是之前还是之后
上一篇: tkinter -- Text(1)
下一篇: tkinter -- Text (3)
47604
45983
36909
34467
29079
25713
24565
19714
19245
17756
5564°
6155°
5690°
5737°
6703°
5482°
5484°
5988°
5965°
7295°