文章目录
这次时Text、Entry控件的教程。
1.Text。
1.Text的简介。
Text一般用于展示文本、输入文本。在编写代码时,需要将其他控件与文本一起展示时可以使用Text。
2.怎么创建Text?
只需要像这样:
class tk:#引入
from tkinter import Tk,Text
root=tk.Tk()#窗口
#创建Text
text=tk.Text(root)
text.pack(fill='both',expand=1)#fill指X、Y轴都填充,expand指是否占据父窗口(master)的剩余部分,这里为True
root.mainloop()#循环
就是这个样子。
3.Text的选项。
选项 | 功能 |
---|---|
background | 设置背景颜色,可以是颜色单词也可以是16进制数‘,"bg"是它的缩写。 |
selectforeground | 设置文本被选中时的前景色,可以是颜色单词也可以是16进制数‘。 |
foreground | 设置前景色,可以是颜色单词也可以是16进制数‘,"fg"是它的缩写。 |
selectbackground | 设置文本被选中时的背景色,可以是颜色单词也可以是16进制数‘。 |
insertbackground | 设置光标的颜色。 |
insertborderwidth | 设置光标宽度。 |
insertofftime | 设置光标消失的时间,单位时毫秒。 |
insertontime | 设置光标出现的时间,单位时毫秒。 |
undo | 是否支持撤销,默认为False。 |
maxundo | 设置最大撤销次数。 |
setgrid | 设置是否使用grid布局。 |
takefocus | 设置是否能将焦点转移至Text。 |
wrap | 设置换行方式,默认是"char",可选"none"(不自动换行)、“word”(按空格换行)。 |
xscrollcommand | 设置X轴滚动条在Text的命令(?),值为滚动条的set方法,不带括号。 |
yscrollcommand | 设置Y轴滚动条在Text的命令(?),值为滚动条的set方法,不带括号。 |
relief | 设置边框样式,例如"flat",“groove”,“ridge”,这些英文在Tkinter中有专门的变量,例如groove就是tk.GROOVE,在传参时可以写成relief=tk.GROOVE。 |
font | 字体,提供一个元组,如()。 |
bd | 边框像素,默认是2。 |
height | Text的高度。 |
width | Text的长度。 |
highlightcolor | 高亮的颜色。 |
justify | 对齐方式,有"center",“left”,“right”,默认是"center"。 |
padx | 设置x轴方向的内边距。 |
pady | 设置y轴方向的内边距。 |
state | 设置Text状态,可选"normal"、“disabled”。 |
tabs | 设置按下tab后空出的长度,当传入整形数时,单位时像素。当值为字符串+上"c"("_c")时单位时厘米。 |
4.获取Text的内容。
1.get方法。
text.get(index1,index2)
通过get方法返回Text中纯文本的内容,index1为开始,index2为结束,若要获取全部内容即为
text.get('0.0','end')
2.dump方法。
textdump(index1, index2=None, command=None, **kw)
dump方法返回的值就十分详细的,连tag都给你返回出来。
index1、index2的功能和get的一样。
例子:
class tk:#引入
from tkinter import Tk,Text,Button
root=tk.Tk()#窗口
#创建Text
text=tk.Text(root,tabs='1')
text.pack(fill='both',expand=1)#fill指X、Y轴都填充,expand指是否占据父窗口(master)的剩余部分,这里为True
#获得内容
tk.Button(root,text='CLICK',command=lambda v=0:print(text.dump('0.0','end'))).pack(fill='x')
root.mainloop()#循环
返回的列表的元组的第一项([0])是类型,类型有以下几种:
名称 | 类型 |
---|---|
text | 平平无奇的正常文本。 |
tagon | tag的开始,第二项是tag的名称,第三项则是tag的起始位置。 |
tagoff | tag的结束,第二项是tag的名称,第三项则是tag的结束位置。 |
mark | mark的位置,第二项是名称,第三项是位置。 |
window | 控件,第二项是master和控件的类型,第三项是索引。 |
image | 图片,第二项是类型,第三项是索引。 |
5.Text撤销文本。
在此之前,undo选项必须是True,否则无法撤销。
方法 | 作用 |
---|---|
edit_reset() | 清空存放操作记录的栈。 |
edit_undo() | 撤销。 |
edit_redo() | 恢复。 |
edit_separator() | 插入分隔符。 |
如果undo操作达到极限但还是继续undo时,Tkinter会报错。
Tkinter默认时每一行末尾插入一个分隔符,这会导致撤销时整行都撤销,所以绑定一个时间用于插入分隔符,防止这个现象发生:
text.bind('<KeyPress>',lambda v=0:text.edit_separator())
6.移动Text的光标。
使用text的mark_set方法设置光标位置,例如:
text.mark_set('insert',0.0)
即为将光标设置到第0(1)行的第0(1)个字符。
7.获得Text的光标的位置。
使用text的index方法获得,例如:
text.index('insert')
index中间的参数可以换成其它的,例如tag名称。
8.滚动Text到指定位置。
使用see方法,例如:
text.see("end")
滚动Text到最后一个字符。
9.将指定区域的所有内容替换为指定字符串。
使用replace方法。
text.replace(index1,index2=None,char,**kw)
index1、index2不用多说了,char为替换的字符。
10.搜索文本。
text.search(pattern, index, stopindex=None, forwards=None, backwards=None, exact=None, regexp=None, nocase=None, count=None)
regexp若为为True,则 pattern 被解释为Tcl格式的正则表达式、
nocass若为True则搜索时忽略大小写。
count需要被设置为IntVar,用于存放搜索到的数量。
11.Tags。
Tag可以理解为在Text中的标记。
方法 | 作用 |
---|---|
tag_config(tagName,cnf=None,**kw) | 设置tag的属性,如果tag不存在则创建新的tag但不设置索引。 |
tag_configure(tagName,cnf=None,**kw) | 和tag_config一样。 |
tag_delete(*tagNames) | 删除tag。 |
tag_bind(tagName, sequence, func, add=None) | 为指定的tag绑定事件。 |
tag_cget(tagName, option) | 返回指定tag的option选项的值。 |
tag_lower(tagName, belowThis=None) | 降低tag的优先级,若belowThis不为空则降至belowThis下面。 |
tag_raise(tagName, aboveThis=None) | 升高tag的优先级,若aboveThis不为空则升至其上。 |
tag_ranges(tagName) | 以列表的方式返回tag的文本。 |
tag_remove(tagName, index1, index2=None) | 删除index1到index2的所有tagName。 |
tag_unbind(tagName, sequence, funcid=None) | 取消绑定tag事件。 |
12.Text嵌入控件。
使用window_create方法。
text.window_create(index, **options)
例如:
text.window_create('end',window=Tk_obj)
Tk_obj为Tkinter控件,master为text。
13.Text返回所有window。
使用window_names方法即可。
text.window_names()
14.bind与unbind。
绑定与取消绑定事件。
bind(sequence,func=None)
15.xview与yview。
一般用于给滚动条(scrollbar)的command选项赋值。
scrollbar1['command']=text.xview
scrollbar2['command']=text.yview
xview用于X轴滚动,如果要使用text的wrap选项应为"none"。
xview用于Y轴滚动。
16.插入文本。
使用insert方法。
text.insert(index,chars,*args)
insert时可以附加tag,只需要在chars后面填写。
插入时text的state必须是normal(正常)。
17.后期设置Text选项。
使用config方法即可。
text.config(name=value)
替换name和value即可,同样这还可以延长,config可以设置多个选项。
text.config(state='normal',wrap='none')
上面代码就是设置了text的状态为正常及从不自动换行。
只要是合法的参数和选项都能修改。
18.mark_set。
设置mark,例如insert。
2.尾声。
下一次是Entry的更新,Text的内容太多了。