Tkinter 之Text文本框标签

一、参数说明

语法作用
t=tk.Text()
t.insert(END,'插入的文本信息')
INSERT:光标的插入点
CURRENT:鼠标的当前位置所对应的字符位置
END:这个Textbuffer的最后一个字符
SEL_FIRST:选中文本域的第一个字符,如果没有选中区域则会引发异常
SEL_LAST:选中文本域的最后一个字符,如果没有选中区域则会引发异常
t.delete(mark1, mark2) INSERT:光标的插入点 CURRENT:鼠标的当前位置所对应的字符位置
END:这个Textbuffer的最后一个字符
SEL_FIRST:选中文本域的第一个字符,如果没有选中区域则会引发异常
SEL_LAST:选中文本域的最后一个字符,如果没有选中区域则会引发异常

tag_config参数:

background  指定该 Tag 所描述的内容的背景颜色
注意:bg 并不是该选项的缩写,在这里 bg 被解释为 bgstipple 选项的缩写
bgstipple  指定一个位图作为背景,并使用 background 选项指定的颜色填充
只有设置了 background 选项该选项才会生效
默认的标准位图有:'error', 'gray75', 'gray50', 'gray25', 'gray12', 'hourglass', 'info', 'questhead', 'question' 和 'warning'
borderwidth  指定文本框的宽度
fgstipple  指定一个位图作为前景色
默认的标准位图有:'error', 'gray75', 'gray50', 'gray25', 'gray12', 'hourglass', 'info', 'questhead', 'question' 和 'warning'
font  指定该 Tag 所描述的内容使用的字体
foreground  指定该 Tag 所描述的内容的前景色
注意:fg 并不是该选项的缩写,在这里 fg 被解释为 fgstipple 选项的缩写
justify  控制文本的对齐方式
默认是 "left"(左对齐),还可以选择 "right"(右对齐)和 "center"(居中)
lmargin1  设置 Tag 指向的文本块第一行的缩进
lmargin2  设置 Tag 指向的文本块除了第一行其他行的缩进
offset  设置 Tag 指向的文本相对于基线的偏移距离  可以控制文本相对于基线是升高(正数值)或者降低(负数值)
默认值是 0
overstrike  在 Tag 指定的文本范围画一条删除线
underline  该选项设置为 True 的话,则 Tag 所描述的范围内文本将被画上下划线
wrap  设置当一行文本的长度超过 width 选项设置的宽度时,是否自动换行
该选项的值可以是:"none"(不自动换行),"char"(默认)(按字符自动换行)和 "word"(按单词自动换行)

Text方法列表:

bbox(index)
-- 返回给定索引指定的字符的边界框
-- 返回值是一个 4 元组:(x, y, width, height)
-- 如果该字符是不可见的,那么返回 None
-- 注意:只有当 Text 组件被更新的时候该方法才有效,可以使用 update_idletasks() 方法先更新 Text 组件

compare(index1, op, index2)
-- 返回对比 index1 和 index2 指定的两个字符的结果
-- op 是操作符:'<', '<=', '==', '>=', '>' 或 '!='(不支持 Python 的 '<>' 操作符)
-- 返回布尔类型的值表示对比的结果

debug(boolean=None)
-- 开启或关闭 Debug 状态

delete(start, end=None)
-- 删除给定范围的文本或嵌入对象
-- 如果在给定范围内有任何 Marks 标记的位置,则将 Marks 移动到 start 参数开始的位置

dlineinfo(index)
-- 返回给定索引指定的字符所在行的边界框
-- 返回值是一个 5 元组:(x, y, width, height, offset),offset 表示从该行的顶端到基线的偏移
-- 如果该行不可见,则返回 None
-- 注意:只有当 Text 组件被更新的时候该方法才有效,可以使用 update_idletasks() 方法先更新 Text 组件

dump(index1, index2=None, command=None, **kw)
-- 返回 index1 和 index2 之间的内容
-- 返回的值是一个由 3 元组(关键词,值,索引)组成的列表,关键词参数的顺序为:all, image, mark, tag, text, window
-- 默认关键词是 'all',表示全部关键词均为选中状态
-- 如果需要筛选个别关键词,可以用 dump(index1, index2, image=True, text=True) 这样的形式调用
-- 如果指定了 command 函数,那么会为列表中的每一个三元组作为参数调用一次该函数(这种情况下,dump() 不返回值)

edit_modified(arg=None)
-- 该方法用于查询和设置 modified 标志(该标标志用于追踪 Text 组件的内容是否发生变化)
-- 如果不指定 arg 参数,那么返回 modified 标志是否被设置
-- 你可以传递显式地使用 True 或 False 作为参数来设置或清除 modified 标志
-- 任何代码或用户的插入或删除文本操作,“撤销”或“恢复”操作,都会是的 modified 标志被设置

edit_redo(self)
-- “恢复”上一次的“撤销”操作
-- 如果 undo 选项为 False,该方法无效
-- 详见上方用法【“撤销”和“恢复”操作】

edit_reset()
-- 清空存放操作记录的栈

edit_separator()
-- 插入一个“分隔符”到存放操作记录的栈中,用于表示已经完成一次完整的操作
-- 如果 undo 选项为 False,该方法无效
-- 详见上方用法【“撤销”和“恢复”操作】

edit_undo()
-- 撤销最近一次操作
-- 如果 undo 选项为 False,该方法无效
-- 详见上方用法【“撤销”和“恢复”操作】

get(index1, index2=None)
-- 返回 index1 到 index2(不包含)之间的文本
-- 如果 index2 参数忽略,则返回一个字符
-- 如果包含 image 和 window 的嵌入对象,均被忽略
-- 如果包含有多行文本,那么自动插入换行符('\n')

image_cget(index, option)
-- 返回 index 参数指定的嵌入 image 对象的 option 选项的值
-- 如果给定的位置没有嵌入 image 对象,则抛出 TclError 异常

image_configure(index, **options)
-- 修改 index 参数指定的嵌入 image 对象的一个或多个 option 选项的值
-- 如果给定的位置没有嵌入 image 对象,则抛出 TclError 异常

image_create(index, cnf={}, **kw)
-- 在 index 参数指定的位置嵌入一个 image 对象
-- 该 image 对象必须是 Tkinter 的 PhotoImage 或 BitmapImage 实例
-- 可选选项 align:设定此图像的垂直对齐,可以是 "top"、"center"、"bottom" 或 "baseline"
-- 可选选项 image:PhotoImage 或 BitmapImage 对象
-- 可选选项 name:你可以为该图像实例命名,如果你忽略此选项,那么 Tkinter 会自动为其取一个独一无二的名字。
-- 可选选项 padx:设置水平方向上的额外间距
-- 可选选项 pady:设置垂直方向上的额外间距

image_names()
-- 返回 Text 组件中嵌入的所有 image 对象的名字

index(index)
-- 将 index 参数指定的位置以 "line.column" 的索引形式返回
-- index 参数支持任何格式的索引

insert(index, text, *tags)
-- 在 index 参数指定的位置插入字符串
-- 可选参数 tags 用于指定文本的样式
-- 详见上方【Tags 用法】

mark_gravity(self, markName, direction=None)
-- 设置 Mark 的方向,可以是 "left" 或 "right"(默认是 "right",即如果在 Mark 处插入文本的话,Mark 将发生相应的移动以保持在插入文本的右侧)
-- 如果设置为 "left",那么在 Mark 处插入文本并不会移动 Mark(因为 Mark 在插入文本的左侧)
-- 如果忽略 direction 参数,则返回指定 Mark 的方向
-- 详见上方【Marks 用法】

mark_names()
-- 返回 Text 组件中所有 Marks 的名字
-- 包括两个特殊 Mark:"insert" 和 "current"
-- 注意:"end" 是特殊的索引,不是 Mark

mark_next(index)
-- 返回在 index 指定的位置后边的一个 Mark 的名字
-- 如果不存在则返回空字符串

mark_previous(index)
-- 返回在 index 指定的位置前边的一个 Mark 的名字
-- 如果不存在则返回空字符串

mark_set(markName, index)
-- 移动 Mark 到 index 参数指定的位置
-- 如果 markName 参数指定的 Mark 不存在,则创建一个新的 Mark

mark_unset(*markNames)
-- 删除 markNames 指定的 Marks
-- 不能删除预定义的 "insert" 和 "current"

replace(index1, index2, chars, *args)
-- 将 index1 到 index2 之间的内容替换为 chars 参数指定的字符串
-- 如果需要为替换的内容添加 Tag,可以在 args 参数指定 Tag
-- 详见上方【Tags 用法】

scan_dragto(x, y)
-- 详见下方 scan_mark(x, y)

scan_mark(x, y)
-- 使用这种方式来实现 Text 组件内容的滚动
-- 需要将鼠标按钮事件以及鼠标当前位置绑定到 scan_mark(x, y) 方法,然后将 <motion> 事件及当前鼠标位置绑定到 scan_dragto(x, y) 方法,就可以实现 Text 组件的内容在当前位置和 scan_mark(x, y) 指定的位置 (x, y) 之间滚动

search(pattern, index, stopindex=None, forwards=None, backwards=None, exact=None, regexp=None, nocase=None, count=None)
-- 从 index 开始搜索 pattern,到 stopindex 结束(不指定表示搜索到末尾)
-- 如果成功找到,以 "line.column" 返回第一个匹配的字符;否则返回空字符串
-- forwards 参数设置为 True 表示向前(->)搜索
-- backwards 参数设置为 True 表示向后(<-)搜索
-- exact 参数设置为 True 表示搜索与 pattern 完全匹配的结果
-- regexp 参数设置为 True,则 pattern 被解释为 Tcl 格式的正则表达式
-- nocase 参数设置为 True 是忽略大小写,默认是区分大小写的搜索
-- count 参数指定为一个 IntVar 的 Tkinter 变量,用于存放当找到匹配的字符个数(如果匹配结果中没有嵌入的 image 或 window 对象的话,一般该值等于 pattern 的字符个数)

see(index)
-- 滚动内容,确保 index 指定的位置可见

tag_add(tagName, index1, index2=None)
-- 为 index1 到 index2 之间的内容添加一个 Tag(tagName 参数指定)
-- 如果 index2 参数忽略,则单独为 index1 指定的内容添加 Tag
-- 详见上方【Tags 用法】

tag_bind(tagName, sequence, func, add=None)
-- 为 Tag 绑定事件
-- 详见上方【Tags 用法】

tag_cget(tagName, option)
-- 返回 tagName 指定的 option 选项的值

tag_config(tagName, cnf=None, **kw)
-- 跟 tag_configure(tagName, cnf=None, **kw) 一样

tag_configure(tagName, cnf=None, **kw)
-- 设置 tagName 的选项
-- 详见上方【Tags 用法】

tag_delete(*tagNames)
-- 删除 tagNames 指定的 Tags

tag_lower(tagName, belowThis=None)
-- 降低 Tag 的优先级
-- 如果 belowThis 参数不为空,则表示 tagName 需要比 belowThis 指定的 Tag 优先级更低
-- 详见上方【Tags 用法】

tag_names(index=None)
-- 如果不带参数,表示返回 Text 组件中所有 Tags 的名字
-- index 参数表示返回该位置上所有的 Tags 的名字

tag_nextrange(tagName, index1, index2=None)
-- 在 index1 到 index2 的范围内第一个 tagName 的位置
-- 如果没有则返回空字符串

tag_prevrange(tagName, index1, index2=None)
-- tag_nextrange() 的反向查找,也就是查找范围是 index2 到 index1

tag_raise(tagName, aboveThis=None)
-- 提高 Tag 的优先级
-- 如果 aboveThis 参数不为空,则表示 tagName 需要比 aboveThis 指定的 Tag 优先级更高
-- 详见上方【Tags 用法】

tag_ranges(tagName)
-- 返回所有 tagName 指定的文本,并将它们的范围以列表的形式返回

tag_remove(tagName, index1, index2=None)
-- 删除 index1 到 index2 之间所有的 tagName
-- 如果忽略 index2 参数,那么只删除 index1 指定的那个字符的 tagName(如果有的话)

tag_unbind(tagName, sequence, funcid=None)
-- 解除与 tagName 绑定的事件(sequence 指定)

window_cget(index, option)
-- 返回 index 参数指定的嵌入 window 对象的 option 选项的值
-- 如果给定的位置没有嵌入 window 对象,则抛出 TclError 异常

window_config(index, cnf=None, **kw)
-- 跟 window_configure(index, cnf=None, **kw) 一样

window_configure(index, cnf=None, **kw)
-- 修改 index 参数指定的嵌入 window 对象的一个或多个 option 选项的值
-- 如果给定的位置没有嵌入 window 对象,则抛出 TclError 异常

window_create(index, **options)
-- 在 index 参数指定的位置嵌入一个 window 对象
-- 支持两种方式在 Text 组件中嵌入 window 对象:请看下方 create 选项和 window 选项的描述
-- 可选选项 align:设定此图像的垂直对齐,可以是 "top"、"center"、"bottom" 或 "baseline"
-- 可选选项 create:指定一个回调函数用于创建嵌入的 window 组件,该函数没有参数,并且必须创建 Text 的子组件并返回
-- 可选选项 padx:设置水平方向上的额外间距
-- 可选选项 pady:设置垂直方向上的额外间距
-- 可选选项 stretch:该选项控制当行的高度大于嵌入组件的高度时,嵌入组件是否延伸。默认值是 False,表示组件保持原形;设置为 True 表示将该组件垂直部分延伸至行的高度
-- 可选选项 window:指定一个已经创建好的 window 组件,该组件必须是 Text 组件的子组件

window_names()
-- 返回 Text 组件中嵌入的所有 window 对象的名字

xview(*args)
-- 该方法用于在水平方向上滚动 Text 组件的内容,一般通过绑定 Scollbar 组件的 command 选项来实现(具体操作参考:Scrollbar)
-- 如果第一个参数是 "moveto",则第二个参数表示滚动到指定的位置:0.0 表示最左端,1.0 表示最右端
-- 如果第一个参数是 "scroll",则第二个参数表示滚动的数量,第三个参数表示滚动的单位(可以是 "units" 或 "pages"),例如:xview("scroll", 3, "units") 表示向右滚动三行

xview_moveto(fraction)
-- 跟 xview("moveto", fraction) 一样

xview_scroll(number, what)
-- 跟 xview("scroll", number, what) 一样

yview(*args)
-- 该方法用于在垂直方向上滚动 Text 组件的内容,一般通过绑定 Scollbar 组件的 command 选项来实现(具体操作参考:Scrollbar)
-- 如果第一个参数是 "moveto",则第二个参数表示滚动到指定的位置:0.0 表示最顶端,1.0 表示最底端
-- 如果第一个参数是 "scroll",则第二个参数表示滚动的数量,第三个参数表示滚动的单位(可以是 "units" 或 "pages"),例如:yview("scroll", 3, "pages") 表示向下滚动三页

yview_moveto(fraction)
-- 跟 yview("moveto", fraction) 一样

yview_scroll(number, what)
-- 跟 yview("scroll", number, what) 一样

 

二、代码示例

import tkinter as tk

window = tk.Tk()
# 设置主窗体大小
winWidth = 600
winHeight = 400
# 获取屏幕分辨率
screenWidth = window.winfo_screenwidth()
screenHeight = window.winfo_screenheight()
# 计算主窗口在屏幕上的坐标
x = int((screenWidth - winWidth)/ 2)
y = int((screenHeight - winHeight) / 2)

# 设置主窗口标题
window.title("Entry输入框参数说明")
# 设置主窗口大小
window.geometry("%sx%s+%s+%s" % (winWidth, winHeight, x, y))
# 设置窗口宽高固定
window.resizable(0,0)
# 设置窗口图标
window.iconbitmap("./image/icon.ico")

"""Construct a text widget with the parent MASTER.

    STANDARD OPTIONS

        background, borderwidth, cursor,
        exportselection, font, foreground,
        highlightbackground, highlightcolor,
        highlightthickness, insertbackground,
        insertborderwidth, insertofftime,
        insertontime, insertwidth, padx, pady,
        relief, selectbackground,
        selectborderwidth, selectforeground,
        setgrid, takefocus,
        xscrollcommand, yscrollcommand,

    WIDGET-SPECIFIC OPTIONS

        autoseparators, height, maxundo,
        spacing1, spacing2, spacing3,
        state, tabs, undo, width, wrap,

    """
def insert_end():
    text.insert(tk.END, "is end")
    
def insert():
    text.insert(tk.END, "is insert")
    
    
text = tk.Text(window, height=3)
text.pack()
tk.Button(window, text="end", width=30, pady=5, command=insert_end).pack(side=tk.TOP)
tk.Button(window, text="insert", width=30, pady=5, command=insert).pack(side=tk.TOP)

window.mainloop()

  

三、效果图

 

 

 

posted @ 2019-11-03 15:28  样子2018  阅读(9575)  评论(0编辑  收藏  举报