目录

引入创建一个输入框输入框的属性颜色字体长度光标状态边框显示的字符对齐方式光标闪烁和粗细

修改属性方法插入内容获取内容删除内容移动光标选中内容

总结

引入

优秀的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()

哈哈,谢谢您的阅读!点个赞,关注一下呗!我们下期再见~

推荐阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: