tkinter-text详解(1)
text组件Text 组件用于显示文本文档,包含纯文本或格式化文本(使用不同字体,嵌入图片,显示链接,甚至是带 CSS 格式的 HTML 等)。因此,它常常也被用于作为简单的文本编辑器和网页浏览器使用.给其插入内容,你可以使用 insert() 方法以及 INSERT 或 END 索引号.在 Text 组件中插入对象,可以使用 window_create() 和 image_create() 方法
text组件
Text 组件用于显示文本文档,包含纯文本或格式化文本(使用不同字体,嵌入图片,显示链接,甚至是带 CSS 格式的 HTML 等)。因此,它常常也被用于作为简单的文本编辑器和网页浏览器使用.
给其插入内容,你可以使用 insert() 方法以及 INSERT 或 END 索引号.
在 Text 组件中插入对象,可以使用 window_create() 和 image_create() 方法
删除 Text 组件中的内容可以用 delete() 方法,下边代码用于删除所有内容(也包含 window 和 image 对象,但不会删除 marks 的内容),删除单个时使用第一个参数即可
text.delete(1.0, END)
text.delete(b1)
state 默认NORMAL, 设为DISABLED 表示只读
get() -- 获取内容
index() 方法用于将所有支持的“索引”格式 --> print(text.index(INSERT))
from tkinter import *
root = Tk()
text1 = Text(root, width=50, height=40)
text1.pack()
text1.insert(INSERT, 'starting writing\n')
photo = PhotoImage(file='g.gif')
def show():
text1.insert(END, '\nshow a new photo')
text1.image_create(END, image=photo) # insert a photo into textbox after click button
button = Button(text1, text='Click Me!', command=show)
# insert a button into the textbox
text1.window_create(INSERT, window=button)
mainloop()
Indexes 用法
Indexes(索引)是用来指向 Text 组件中文本的位置,跟 Python 的序列索引一样,Text 组件索引也是对应实际字符之间的位置。
Tkinter 提供一系列不同的索引类型:
- "line.column"(行/列)
- 1.0 -- 行号以 1 开始,列号则以 0 开始
- 允许使用行号大于当前行数,取已有内容末尾的下一个位置
- 允许使用浮点数表示,"1.2", 1.6 都可以用
- 使用 index() 方法可以将所有支持的“索引”格式转换为“行/列”格式的索引号。
- "line.end"(某一行的末尾)
- 表示为该行最后一个字符的位置
- INSERT
- 对应插入光标的位置。
- CURRENT
- 对应与鼠标坐标最接近的位置。不过,如果你紧按鼠标任何一个按钮,它会直到你松开它才响应。
- END
- 对应 Text 组件的文本缓冲区最后一个字符的下一个位置。
- user-defined marks
- INSERT 和 CURRENT 是两个预先命名好的 marks,除此之外你可以自定义 marks
- user-defined tags("tag.first","tag.last")
- User-defined tags 代表可以分配给 Text 组件的特殊事件绑定和风格
- 如果查无此 tag,那么 Tkinter 会抛出一个TclError 异常。
- selection(SEL_FIRST,SEL_LAST)
- 是一个名为 SEL(或 "sel")的特殊 tag,表示当前被选中的范围,你可以使用 SEL_FIRST 到 SEL_LAST 来表示这个范围。如果没有选中的内容,那么 Tkinter 会抛出一个TclError 异常。
- window coordinate("@x,y")
- 窗口坐标作为索引, "@%d,%d" % (event.x, event.y) --找到最接近鼠标位置的字符
- embedded object name(window,images)
- 用于指向在 Text 组件中嵌入的 window 和 image 对象。要引用一个 window,只要简单地将一个 Tkinter 组件实例作为索引即可。
- expressions
- 用字符串的形式实现修改索引的表达式。
表达式 | 含义 |
"+ count chars" | 1. 将索引向前(->)移动 count 个字符 2. 可以越过换行符,但不能超过 END 的位置 |
"- count chars" | 1. 将索引向后(<-)移动 count 个字符 2. 可以越过换行符,但不能超过 "1.0" 的位置 |
"+ count lines" | 1. 将索引向前(->)移动 count 行 2. 索引会尽量保持与移动前在同一列上,但如果移动后的那一行字符太少,将移动到该行的末尾 |
"- count lines" | 1. 将索引向后(<-)移动 count 行 2. 索引会尽量保持与移动前在同一列上,但如果移动后的那一行字符太少,将移动到该行的末尾 |
" linestart" | 1. 将索引移动到当前索引所在行的起始位置 2. 注意,使用该表达式前边必须有一个空格隔开 |
" lineend" | 1. 将索引移动到当前索引所在行的末尾 2. 注意,使用该表达式前边必须有一个空格隔开 |
" wordstart" | 1. 将索引移动到当前索引指向的单词的开头 2. 单词的定义是一系列字母、数字、下划线或任何非空白字符的组合 3. 注意,使用该表达式前边必须有一个空格隔开 |
" wordend" | 1. 将索引移动到当前索引指向的单词的末尾 2. 单词的定义是一系列字母、数字、下划线或任何非空白字符的组合 3. 注意,使用该表达式前边必须有一个空格隔开 |
TIPS:只要结果不产生歧义,关键字可以被缩写,空格也可以省略。例如:"+ 5 chars" 可以简写成 "+5c"
更多推荐
所有评论(0)