Tkinter库--Entry输入控件
Tkinter Entry输入控件
Entry 控件是 Tkinter GUI 编程中的基础控件之一,它的作用就是允许用户输入内容,从而实现 GUI 程序与用户的交互,比如当用户登录软件时,输入用户名和密码,此时就需要使用 Entry 控件。
Entry 控件使用起来非常简单,下面对该控件做简单的介绍。
基本语法格式如下:
1 | tk_entry = Entry( master, option, ... ) |
基本属性
基本属性Entry 控件除了具备一些共有属性之外,还有一些自身的特殊属性,如下表所示:
exportselection
默认情况下,如果在输入框中选中文本会复制到粘贴板,如果要忽略这个功能,可以设置为 exportselection=0
selectbackground
选中文字时的背景颜色
selectforeground
选中文字时的前景色
show
指定文本框内容以何种样式的字符显示,
比如密码可以将值设为 show=”*”
textvariable
输入框内值,也称动态字符串,使用 StringVar() 对象来设置,而 text 为静态字符串对象
text
输入框内值,也称静态字符串
xscrollcommand
设置输入框内容滚动条,当输入的内容大于输入框的宽度时使用户
动态数据类型上述表格中提及了 StringVar() 方法,和其同类的方法还有 BooleanVar()、DoubleVar()、IntVar() 方法,不难看出他们分别代表一种数据类型,即字符串、布尔值、浮点型、整型,这些方法并不属于 Python 内置方法,而是 Tkinter 特有的方法。
在界面编程的过程中,有时我们需要“动态跟踪”一些变量值的变化,从而保证值的变换及时的反映到显示界面上,但是 Python 内置的数据类型是无法这一目的的,因此使用了 Tcl 内置的对象,我们把这些方法创建的数据类型称为“动态类型”
比如 StringVar() 创建的字符串,称为“动态字符串”。常与textvariable一块使用
这里写一个时钟看看其的用法
1 | import tkinter as tk |
常用方法
常用方法除了一些基本的属性之外,Entry 控件还提供了一些常用的方法,如下所示:
delete()
根据索引值删除输入框内的值
get()
获取输入框内的值
set()
设置输入框内的值
insert()
在指定的位置插入字符串
index()
返回指定的索引值
select_clear()
取消选中状态
select_adujst()
确保输入框中选中的范围包含 index 参数所指定的字符,选中指定索引和光标所在位置之前的字符
select_from (index)
设置一个新的选中范围,通过索引值 index 来设置
select_present()
返回输入框是否有处于选中状态的文本,如果有则返回 true,否则返回false
select_to()
选中指定索引与光标之间的所有值
select_range()
选中指定索引与光标之间的所有值,参数值为 start,end,要求 start 必须小于 end。
注意:
在 Entry 控件中,我们可以通过以下方式来指定字符的所在位置:
数字索引:表示从 0 开始的索引数字;
“ANCHOE”:在存在字符的情况下,它对应第一个被选中的字符;
“END”:对应已存在文本中的最后一个位置;
“insert(index,’字符’):将字符插入到 index 指定的索引位置。
1 | import tkinter as tk |
Entry控件验证功能
Entry 控件也提供了对输入内容的验证功能,比如要求输入英文字母,你却输入了数字,这就属于非法输入,Entry 控件通过以下参数实现对内容的校验:
validate
指定验证方式,字符串参数,参数值有 focus、focusin、focusout、key、all、none。
validatecommand
指定用户自定义的验证函数,该函数只能返回 True 或者 Fasle
invalidcommand
当 validatecommand 指定的验证函数返回 False 时,可以使用该参数值再指定一个验证函数。
下面对 validate 的参数值做简单的介绍:
focus
当 Entry 组件获得或失去焦点的时候验证
focusin
当 Entry 组件获得焦点的时候验证
focusout
当 Entry 组件失去焦点的时候验证
key
当输入框被编辑的时候验证
all
当出现上边任何一种情况的时候验证
none
默认不启用验证功能,需要注意的是这里是字符串的 ‘none’
1 | import tkinter as tk |
不仅如此,Tkinter 还为验证函数提供可一些额外的选项,不过想要使用这些额外选项,需要提前使用 register() 方法对验证函数进行注册,
常用的选项:
%d
有 3 个参数值,其中 0 表示删除操作;1 表示插入操作;2 表示获得、失去焦点或 textvariable 变量的值被修改导
%i
当用户进行插入或者删除操作的时,该选项不爱哦是插入或者删除的索引位置,若是其他的情况则选项值为 -1
%P
该选项值指定了输入框内的文本内容,只有当输入框的值允许改变的时候,该选项值才会生效。
%s
改值为调用验证函数钱输入框内的文本内容
%S
该选项值,只有插入或者删除操作触发验证函数的时候才会生效,它表示了被删除或者插入的内容
%v
表示当前 Entry 控件的 validate 参数的值
%V
表示触发验证函数的原因,值为 focus、focusin 、focusout、all、key.. 中的一个。
%W
该选项表示控件类型,即控件的名字(Entry)
1 | from tkinter import * |
这种博主也用的少,可以了解一下就好了
Spinbox 高级输入框
Spinbox 高级输入框Spinbox 是 Entry 控件的升级版,该控件不仅允许用户直接输入内容,还支持用户使用微调选择器(即上下按钮调节器)来输入内容。在一般情况下,Spinbox 控件用于在固定的范围内选取一个值的时候使用
1 | import tkinter as tk |
若不是数字,而是字符串形式的选项值,则采用values参数以元组的形式进行传参,如下所示
1 | import tkinter as tk |