优秀的tkinter库还有那些控件呢?这期我们就来看看输入框吧!
先制作一个窗口,然后把输入框黏上去。
import tkinter
root = tkinter.Tk()
entry = tkinter.Entry(root) #创建一个输入框
entry.pack() #把输入框放到窗口上去
root.mainloop()
输入框可以改变它的颜色。颜色包括字体颜色(fg
或foreground
)、背景颜色(bg
或background
)、选中时的高亮颜色(selectbackground
)和选中时的字体颜色( selectforeground
)。
颜色可以用英语单词(如"red"
、"blue"
)来表示,也可以用HEX格式的颜色(如"#ff00ff"
、"#abcd00"
)。
import tkinter
root = tkinter.Tk()
entry = tkinter.Entry(root,fg="red",bg="blue",selectbackground="black",selectforeground="white")
#创建一个输入框,正常时蓝底红字,被选中的内容黑底白字
entry.pack() #把输入框放到窗口上去
root.mainloop()
还可以设置输入框的字体。比如,我喜欢宋体字,希望字体大一点,并且是斜体。
import tkinter
root = tkinter.Tk()
entry = tkinter.Entry(root,font=("宋体",25,"italic"))
#创建一个输入框,字体为宋体,字号25,斜体
#若不需要设置字体大小和字体样式,也可以直接写为:
#entry = tkinter.Entry(root,font="宋体")
entry.pack() #把输入框放到窗口上去
root.mainloop()
关键词 | 样式 | 样例 |
---|---|---|
roman | 正体字 | |
italic | 斜体字 | |
bold | 粗体字 | |
underline | 下划线 | |
overstrike | 杠掉 |
输入框只能设置其长度而不能设置其宽度。因此,如果你像这样:entry1 = tkinter.Entry(root,width=50,height=20)
,那么会报错。而长度并不是像素个数,而是一次性可现实的英文字母个数。也就是说,如果长度为50,那么在不左右滑动的情况下可以一下子显示约50个英文字母。
import tkinter
root = tkinter.Tk()
entry1 = tkinter.Entry(root,width=50) #长度约为50个英文字母
entry1.pack()
entry2 = tkinter.Entry(root,width=20) #长度约为20个英文字母
entry2.pack()
root.mainloop()
光标有许多种样式。内容不少,这里就稍微介绍下吧,其余的内容我找时间再专门写一篇吧。
import tkinter
root = tkinter.Tk()
entry = tkinter.Entry(root,cursor="crosshair") #光标放在输入框上后样式为十字准心
entry.pack() #把输入框粘到窗口上
root.mainloop()
默认鼠标样式是xterm(文本编辑,工字形),除此之外还有其它一些鼠标样式,如arrow等。
一般的tkinter控件都有2个常用的状态:正常(Normal)、禁用(Disabled),还有一些不常用的,如只读(Readonly)、活动(Active),这里只介绍Disabled和Normal吧,因为另外两个实在太不常见了。
import tkinter
root = tkinter.Tk()
entry1 = tkinter.Entry(root,state=tkinter.DISABLED)
#禁用,无法点击也无法往里面输入内容,也无法从中复制内容
entry1.pack()
entry2 = tkinter.Entry(root,state=tkinter.NORMAL)
#可以进行操作
entry2.pack()
entry3 = tkinter.Entry(root,state="readonly")
#只能复制内容,而不可以输入内容。
#tkinter模块中,没有tkinter.READONLY 这个变量,所有就用字符串代替吧
entry3.pack()
root.mainloop()
边框样式(relief
)一共有这么几种:flat
、groove
、raised
、ridge
、solid
、sunken
,就一起来看看效果吧!
import tkinter
root = tkinter.Tk()
relief = ["flat","groove","raised","ridge","solid","sunken"] #不同的样式
for i in range(len(relief)):
entry = tkinter.Entry(root,relief=relief[i]) #每个样式来一个输入框
entry.place(x=5,y=i * 30) #把每个样式的输入框放在窗口上
root.mainloop()
有了边框样式,我们还可以设置边框的厚度:bd
或borderwidth
。
import tkinter
root = tkinter.Tk()
entry = tkinter.Entry(root,bd=20) #厚厚的一层边框
entry.pack() #把输入框放在窗口上
root.mainloop()
如果你想创建一个密码输入框,那么你肯定希望输入的密码被显示为星星或圆点。关键就在于show
属性,你想让它显示星星,就show="*"
,之后你又想让它显示原来的内容,就show=""
。
import tkinter
root = tkinter.Tk()
entry = tkinter.Entry(root,show="*") #将输入的内容显示为"*"
#当然,你也可以将星星替换成你喜欢的字符
#如果想让输入框显示原来的内容,则可以:
#entry.configure(show="")
entry.pack()
root.mainloop()
在WPS中,文字排版有三种主要的方式:靠左、居中、靠右。其实Entry也有这三种,如示例:
import tkinter
root = tkinter.Tk()
entry1 = tkinter.Entry(root,justify=tkinter.RIGHT) #靠右
entry1.pack()
entry2 = tkinter.Entry(root,justify=tkinter.LEFT) #靠左
entry2.pack()
entry3 = tkinter.Entry(root,justify=tkinter.CENTER) #居中
entry3.pack()
root.mainloop()
光标的闪烁速度可以被改变,使用属性insertontime
,即光标显示的时间,和insertofftime
,即光标隐藏的时间。
import tkinter
root = tkinter.Tk()
entry = tkinter.Entry(root,insertofftime=100,insertontime=1000)
#输入的时候,每次光标闪烁,都显示1000毫秒(即1秒),隐藏100毫秒
entry.pack()
root.mainloop()
同时,还可以改变光标的粗细,那就是insertwidth
属性。
import tkinter
root = tkinter.Tk()
entry1 = tkinter.Entry(root,insertwidth=1) #细细的光标,粗细为1
entry1.pack()
entry2 = tkinter.Entry(root,insertwidth=10) #粗细为10
entry2.pack()
root.mainloop()
import tkinter
root = tkinter.Tk()
entry = tkinter.Entry(root) #输入框
entry.pack() #把输入框贴在窗口上
entry.configure(font=("Consolas",50)) #将字体设置为Consolas,字体大小50,默认样式
#configure 和 config 都可以,
#entry.config(font=("Consolas",50)) 效果一样
root.mainloop()
我们除了要给输入框各种属性,还需要对其进行操作。
如果我们希望在输入框内插入内容,则可以使用insert()
方法。具体如下:
import tkinter
root = tkinter.Tk()
entry = tkinter.Entry()
entry.pack()
entry.insert(tkinter.END,"Hello World!!!")
#在输入框中文字的末尾添加字符串"Hello World!!!"
root.mainloop()
而除了tkinter.END
,还可以是tkinter.INSERT
。两者的区别在于,tkinter.END
代表在文末添加字符串,而tkinter.INSERT
代表在当前的光标位置添加字符串。
当我们需要获取输入框中的内容,可以调用get()
方法。
import tkinter
root = tkinter.Tk()
entry = tkinter.Entry()
entry.pack()
entry.insert(tkinter.END,"Hello World!!!") #插入文本
get_something = entry.get() #获取输入框中的内容
print(get_something)
root.mainloop()
以上的程序会输出输入框中的内容,这里当然就是"Hello World!!!"啦。
在这几种操作中,怎么能少了删除呢!要删除输入框中的内容,就调用delete()
方法。
import tkinter
root = tkinter.Tk()
entry = tkinter.Entry(root)
entry.pack()
entry.insert(tkinter.END,"Hello World!!!") #插入文本
entry.delete(0,tkinter.END) #删除全部内容
root.mainloop()
而delete()
用法稍稍复杂,我们看看下面这个表:
示例 | 意思 |
---|---|
entry.delete(0) | 删除第1个字符 |
entry.delete(1) | 删除第2个字符 |
entry.delete(0,2) | 删除第1-2个字符 |
entry.delete(0,tkinter.END) | 删除所有字符 |
entry.delete(0,tkinter.INSERT) | 从第1个开始一直删到光标所在位置的前面一个字符 |
将光标移到指定的位置,不多说直接看下面的栗子:
import tkinter
root = tkinter.Tk()
entry = tkinter.Entry(root)
entry.pack()
entry.icursor(0) #将光标移动到第一个字符之前
root.mainloop()
我们可以让输入框选中某一部分内容,分别为entry.select_from()
和entry.select_to()
方法,如:
import tkinter
root = tkinter.Tk()
entry = tkinter.Entry(root)
entry.insert(tkinter.END,'Hello World!!!!')
entry.select_from(0) #从第1个字符开始
entry.select_to(7) #一直选择到第8个字符
entry.pack()
但也可以取消选中:
import tkinter
root = tkinter.Tk()
entry = tkinter.Entry(root)
entry.insert(tkinter.END,'Hello World!!!!')
entry.select_clear() #取消选中
entry.pack()
上面就是输入框的主要内容啦。一起来复习一下:
属性 | 意义 |
---|---|
fg或foreground | 字体颜色 |
bg或background | 背景颜色 |
selectforeground | 被选中时候的字体颜色 |
selectbackground | 被选中时候的背景颜色 |
font | 字体,可以传入一个元组,也可以传入一个字符串 |
width | 长度 |
cursor | 光标放置在输入框上时的样式 |
state | 输入框状态,如禁用(Disabled),正常(Normal) |
relief | 边框样式 |
bd或borderwidth | 边框粗细 |
show | 如何展示输入的内容 |
insertontime | 光标显示的时间 |
insertofftime | 光标被隐藏的时间 |
insertwidth | 光标粗细 |
import tkinter
root = tkinter.Tk()
entry = tkinter.Entry(root) #创建一个输入框
entry = tkinter.Entry(root,fg="red",bg="blue",selectbackground="black",selectforeground="white") #正常时蓝底红字,被选中的内容黑底白字
entry = tkinter.Entry(root,font=("宋体",25,"italic")) #字体为宋体,字号25,斜体
entry = tkinter.Entry(root,font="宋体") #字体为宋体,默认字体大小,默认样式
entry1 = tkinter.Entry(root,width=50) #长度约为50个英文字母
entry2 = tkinter.Entry(root,width=20) #长度约为20个英文字母
entry = tkinter.Entry(root,cursor="crosshair") #光标放在输入框上后样式为十字准心
entry1 = tkinter.Entry(root,state=tkinter.DISABLED) #禁用,无法点击也无法往里面输入内容,也无法从中复制内容
entry2 = tkinter.Entry(root,state=tkinter.NORMAL) #可以进行操作
entry3 = tkinter.Entry(root,state="readonly") #只能复制内容,而不可以输入内容。tkinter模块中,没有tkinter.READONLY 这个变量,所有就用字符串代替吧
entry = tkinter.Entry(root,relief="groove") #不同边框样式的输入框
entry = tkinter.Entry(root,bd=20) #厚厚的一层边框
entry = tkinter.Entry(root,show="*") #将输入的内容显示为"*"
entry = tkinter.Entry(root,show="") #显示原来的内容
entry1 = tkinter.Entry(root,justify=tkinter.RIGHT) #靠右
entry2 = tkinter.Entry(root,justify=tkinter.LEFT) #靠左
entry3 = tkinter.Entry(root,justify=tkinter.CENTER) #居中
entry = tkinter.Entry(root,insertofftime=100,insertontime=1000) #输入的时候,每次光标闪烁,都显示1000毫秒(即1秒),隐藏100毫秒
entry1 = tkinter.Entry(root,insertwidth=1) #细细的光标,粗细为1
entry2 = tkinter.Entry(root,insertwidth=10) #粗细为10
entry.configure(font=("Consolas",50)) #将字体更换为Consolas,字号50,默认样式
entry.insert(tkinter.END,"Hello World!!!") #在输入框中文字的末尾添加字符串"Hello World!!!"
entry.delete(0,tkinter.END) #删除全部内容
entry.get() #获取输入框中的内容
entry.icursor(0) #将光标移动到第一个字符之前
entry.pack() #把输入框放到窗口上去
entry.select_from(0) #从第1个字符开始选择
entry.select_to(7) #一直选择到第8个字符
entry.select_clear() #取消选中
root.mainloop()
哈哈,谢谢您的阅读!点个赞,关注一下呗!我们下期再见~