【Python入门级教程】Python GUI界面教学(03)——Text控件


这次时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。
heightText的高度。
widthText的长度。
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()#循环

示例效果1
示例效果2
返回的列表的元组的第一项([0])是类型,类型有以下几种:

名称类型
text平平无奇的正常文本。
tagontag的开始,第二项是tag的名称,第三项则是tag的起始位置。
tagofftag的结束,第二项是tag的名称,第三项则是tag的结束位置。
markmark的位置,第二项是名称,第三项是位置。
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的内容太多了。


版权声明:本文为weixin_48178135原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。