Tkinter自学06(Entry和Text组件)
Entry和Text组件都是可接收用户输入的输入框组件,区别是Entry是单行输入框组件,Text是多行输入框组件,而且Text可以为不同的部分添加不同的格式,甚至是响应事件。
一、Entry组件
1.Entry的参数
下面是Entry的参数:
参数名 | 说明 |
---|---|
bg或background | 背景色彩 |
borderwidth或bd | 边界宽度,默认是2像素 |
command | 当用户更改内容时,会自动执行此函数 |
cursor | 当鼠标光标在文本框上时的光标形状 |
exportselection | 如果执行选取时,所选取的字符串会自动输出至剪贴板,如果想要避免,可以设置exportselection=0 |
fg或foreground | 前景色彩 |
font | 字形 |
height | 高,单位是字符高 |
highlightbackground | 当文本框取得焦点时的背景颜色 |
highlightcolor | 当文本框取得焦点时的颜色 |
justify | 当含多行文字时,最后一行的对齐方式 |
relief | 默认是relief=FLAT,可由此控制文字外框 |
selectbackground | 被选取字符串的背景色彩 |
selectborderwidth | 选取字符串时的边界宽度,预设是1 |
selectfroeground | 被选取字符串的前景色彩 |
show | 显示输入字符,例如,show='*'表示显示星号,常用于输入密码字段 |
state | 输入状态,默认是NORMAL表示可以输入,DISABLE则表示无法输入 |
textvariable | 文字变量 |
width | 宽,单位是字符宽 |
xscrollcommand | 在x轴使用滚动条 |
from tkinter import *root = Tk()lab1 = Label(root,text="账号")
lab2 = Label(root,text="密码")
ent1 = Entry(root)
ent2 = Entry(root,show="*")lab1.grid(row=0,column=0)
lab2.grid(row=1,column=0)
ent1.grid(row=0,column=1)
ent2.grid(row=1,column=1)root.mainloop()
文章图片
基本界面.png
文章图片
用到了show来隐藏所输入的内容.png 2. Entry的方法
下面列出了常用的Entry方法。
方法名 | 说明 |
---|---|
get() | 获取文本框中的内容 |
insert() | 改变文本框中的内容 |
delete() | 删除指定文本框中的部分内容 |
- get()方法可以直接使用不做说明
- insert()方法使用时需要指定插入的文本索引
insert(index,str)
index是插入是的索引,从0开始,1个字符算1个索引号;str是需要插入的字符串。 - delete()方法使用时需要指定删除的字符起始和结束索引号
delete(self,first,last=None)
删除的是Entry内的从第first字符到第last字符间的内容,如果要删除整个字符串可以使用delete(0,END)
1.Text的参数
列出如下:
参数名 | 说明 |
---|---|
bg或background | 背景色彩 |
borderwidth或bd | 边界宽度,默认是2像素 |
cursor | 当鼠标光标在复选框上时的光标形状 |
exportselection | 如果执行选择操作时,所选择的字符串会自动输出至剪贴板,如果想要避免如此可以设置exportselection=0 |
fg或foreground | 字形色彩 |
font | 字形 |
height | 高,单位是字符高,实际高度会视字符高度而定 |
highlightbackground | 当文本框取得焦点时的背景颜色 |
highlightcolor | 当文本框取得焦点时的颜色 |
highlightthickness | 取得焦点时的厚度,默认值是1 |
insertbackground | 插入光标的颜色,默认是黑色 |
insertborderwidth | 围绕插入游标的3D厚度,默认是0 |
padx | Text左/右框与文字最左/最右的间距 |
pady | Text上/下框与文字最上/最下的间距 |
relief | 默认是relief=SUNKEN,可由此控制文字外框 |
selectbackground | 被选取字符串的背景色彩 |
selectborderwidth | 选取字符串时的边界厚度,默认值是1 |
selectforeground | 被选取字符串的前景色彩 |
state | 输入状态,默认是NORMAL,表示可以输入,DISABLED则是无法编辑 |
tab | 可设置按Tab键时,如何定位插入点 |
width | Text的宽,单位是字符宽 |
wrap | 可控制某行文字太长时的处理,默认是wrap=CHAR,当某行文字太长时,可从字符做断行;当wrap=WORD时,只能从字做断行 |
xscrollcommand | 在x轴使用滚动条 |
yscrollcommand | 在y轴使用滚动条 |
2.Text的方法
(1)insert()方法:在指定的位置插入字符串 用法与Entry的insert()一样,语法为:
insert(index,str)
:在index的位置使用INSERT或者END,则直接插入文本末端位置。需要注意的是,Text的索引与Entry的不一样
下面是Text的索引常用参数
索引方式 | 说明 |
---|---|
row.column | 行号从1开始,列号从0开始.比如:1.0代表第1行第1列;3.7代表第3行第8列 |
INSERT | 目前插入点的位置 |
CURRENT | 光标目前位置相对于字符的位置 |
END | 缓冲区最后一个字符后的位置 |
“+count chars” | count是数字,例如,“+2c”索引往后移动两个字符。 |
“-count chars” | count是数字,例如,“-2c”索引往前移动两个字符。 |
Text对象会将所选文字的
起始索引放在SEL_FIRST,
结束索引放在SEL_LAST
将SEL_FIRST和SEL_LAST当作get( )的参数,就可以获得目前所选的文字。
(3)delete()方法 与Entry的delete()方法类似,区别在于索引的表示方法不一样。
(4)marks书签 在编辑文件时,可以在文件特殊位置建立书签(Marks),方便查询。书签是无法显示的,但会在编辑系统内被记录。如果书签内容被删除,则此书签也将自动被删除。
其实在tkinter内默认有两个书签:INSERT和CURRENT。
下面是书签的用法:
书签方法 | 说明 |
---|---|
index(mark) | 传回指定书签的line和column |
mark_names( ) | 传回这个Text对象所有的书签 |
mark_set(mark,index) | 在指定的index位置设置书签 |
mark_unset(mark) | 取消指定书签设置 |
有了标签后,我们可以针对此标签做更进一步的工作,例如,将字形、色彩等应用在此标签上。
标签方法 | 说明 |
---|---|
tag_add(tagname,startindex[,endindex] …) | 将startindex和endindex间的文字命名为tagname标签 |
tag_config(tagname,options, … ) | 可以为标签执行特定的编辑,或动作绑定。① background:背景颜色。② borderwidth:文字外围厚度,默认是0。③ font:字形。④ foreground:前景颜色。⑤ justify:对齐方式,默认是LEFT,也可以是RIGHT或CENTER。⑥ overstrike:如果是True,加上删除线。⑦ underline:如果是True,加上下画线。⑧ wrap:当使用wrap模式时,可以使用NONE、CHAR或WORD |
tag_delete(tagname) | 删除此标签,同时移除此标签特殊的编辑或绑定 |
tag_remove(tagname[,startindex[,endindex]] … ) | 删除标签,但是不移除此标签特殊的编辑或绑定 |
了解了标签的概念后,我们就可以针对特定区间文字或所选取的文字做编辑了。
(6)Cut/Copy/Paste功能 编辑文件时剪切/复制/粘贴(Cut/Copy/Paste)是很常用的功能,这些功能其实已经被内建在tkinter中了。
使用方法:
text.event_generate("<>")
text.event_generate("<>")
text.event_generate("<【Tkinter自学06(Entry和Text组件)】>")
(7)复原与重复(Redo 与 Undo) Text控件有一个简单复原(undo)和重做(redo)的机制,这个机制可以应用于文字删除(delete)和文字插入(insert)。
Text控件在默认环境下没有开启这个机制,如果要使用这个机制,可以在Text( )方法内增加undo=True参数。
text = Text(root,undo=True)
添加了这个参数以后,
就可以用text对象调用edit_undo( )和edit_redo( )方法,
这个方法会自动执行Undo和Redo动作。
(8)查找文字search( ) 在Text控件内可以使用search( )方法查找指定的字符串,这个方法会传回找到第一个指定字符串的索引位置。
假设Text控件的对象是text,它的语法如下。
pos=text.search(key, startindex, endindex)
参数说明:
(1)pos:传回所找到的字符串的索引位置,如果查找失败则传回空字符串。
(2)key:所查找的字符串。
(3)startindex:查找起始位置。
(4)endindex:查找结束位置,如果查找到文档最后可以使用END。
(9)插入图片image_create()方法 Text有一个image_create()方法,可以实现插入PhotoImage对象的图片。
使用方法:
text.image_create(self,index,cnf={},**kw)
三、默认含滚动条的ScrolledText组件 在tkinter.scrolledtext模块内有ScrolledText控件,这是一个默认含有滚动条的Text控件,使用时可以先导入此模块,执行时就可以看到滚动条。
使用方法:
from tkinter.scrolledtext import ScrolledText
root = Tk()
text = ScrolledText(root)
推荐阅读
- 前端自学笔记01
- sentry搭建错误监控系统(二)
- 单片机|自学单片机好找工作吗(会单片机能找什么工作?)
- 那些年,我们自学的UI
- Part2|Part2 B 刻意练习 《自学是门手艺》
- 35岁学python晚吗_35岁了零基础自学Python可行吗()
- 三十岁学python还来得及吗_30岁自学Python转行靠谱吗()
- Django记录操作日志与LogEntry的使用详解
- 如何自学网页UI设计(|如何自学网页UI设计? 网页UI设计快速入门!)
- 程序员|自学编程,学完新的又忘旧的,该怎么办()