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"

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐