Python tkinter(4)输入框控件
后台-插件-广告管理-内容页头部广告(手机) |
目录
- 引入
- 创建一个输入框
- 输入框的属性
- 颜色
- 字体
- 长度
- 光标
- 状态
- 边框
- 显示的字符
- 对齐方式
- 光标闪烁和粗细
- 修改属性
- 方法
- 插入内容
- 获取内容
- 删除内容
- 移动光标
- 选中内容
- 总结
本文由Jzwalliser原创,发布在CSDN平台上,遵循CC 4.0 BY-SA协议。
因此,若需转载/引用本文,请注明作者并附原文链接,且禁止删除/修改本段文字。
违者必究,谢谢配合。
个人主页:blog.csdn.net/jzwalliser
引入
优秀的tkinter库还有那些控件呢?这期我们就来看看输入框吧!
创建一个输入框
先制作一个窗口,然后把输入框黏上去。
import tkinter root = tkinter.Tk() entry = tkinter.Entry(root) #创建一个输入框 entry.pack() #把输入框放到窗口上去 root.mainloop()- 1
- 2
- 3
- 4
- 5
输入框的属性
颜色
输入框可以改变它的颜色。颜色包括字体颜色(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()- 1
- 2
- 3
- 4
- 5
- 6
字体
还可以设置输入框的字体。比如,我喜欢宋体字,希望字体大一点,并且是斜体。
import tkinter root = tkinter.Tk() entry = tkinter.Entry(root,font=("宋体",25,"italic")) #创建一个输入框,字体为宋体,字号25,斜体 #若不需要设置字体大小和字体样式,也可以直接写为: #entry = tkinter.Entry(root,font="宋体") entry.pack() #把输入框放到窗口上去 root.mainloop()- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
而字体的样式除了有斜体之外,还有以下几种:
关键词 | 样式 | 样例 |
---|---|---|
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()- 1
- 2
- 3
- 4
- 5
- 6
- 7
光标
光标有许多种样式。内容不少,这里就稍微介绍下吧,其余的内容我找时间再专门写一篇吧。
import tkinter root = tkinter.Tk() entry = tkinter.Entry(root,cursor="crosshair") #光标放在输入框上后样式为十字准心 entry.pack() #把输入框粘到窗口上 root.mainloop()- 1
- 2
- 3
- 4
- 5
默认鼠标样式是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()- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
边框
边框样式(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()- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
有了边框样式,我们还可以设置边框的厚度:bd或borderwidth。
- 1
- 2
- 3
- 4
- 5
结果就成这样了,这边框真感人!
显示的字符
如果你想创建一个密码输入框,那么你肯定希望输入的密码被显示为星星或圆点。关键就在于show属性,你想让它显示星星,就show="*",之后你又想让它显示原来的内容,就show=""。
import tkinter root = tkinter.Tk() entry = tkinter.Entry(root,show="*") #将输入的内容显示为"*" #当然,你也可以将星星替换成你喜欢的字符 #如果想让输入框显示原来的内容,则可以: #entry.configure(show="") entry.pack() root.mainloop()- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
对齐方式
在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()- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
光标闪烁和粗细
光标的闪烁速度可以被改变,使用属性insertontime,即光标显示的时间,和insertofftime,即光标隐藏的时间。
import tkinter root = tkinter.Tk() entry = tkinter.Entry(root,insertofftime=100,insertontime=1000) #输入的时候,每次光标闪烁,都显示1000毫秒(即1秒),隐藏100毫秒 entry.pack() root.mainloop()- 1
- 2
- 3
- 4
- 5
- 6
同时,还可以改变光标的粗细,那就是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()- 1
- 2
- 3
- 4
- 5
- 6
- 7
修改属性
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()- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
方法
我们除了要给输入框各种属性,还需要对其进行操作。
插入内容
如果我们希望在输入框内插入内容,则可以使用insert()方法。具体如下:
import tkinter root = tkinter.Tk() entry = tkinter.Entry() entry.pack() entry.insert(tkinter.END,"Hello World!!!") #在输入框中文字的末尾添加字符串"Hello World!!!" root.mainloop()- 1
- 2
- 3
- 4
- 5
- 6
- 7
而除了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()- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
以上的程序会输出输入框中的内容,这里当然就是"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()- 1
- 2
- 3
- 4
- 5
- 6
- 7
而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()- 1
- 2
- 3
- 4
- 5
- 6
选中内容
我们可以让输入框选中某一部分内容,分别为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()- 1
- 2
- 3
- 4
- 5
- 6
- 7
但也可以取消选中:
import tkinter root = tkinter.Tk() entry = tkinter.Entry(root) entry.insert(tkinter.END,'Hello World!!!!') entry.select_clear() #取消选中 entry.pack()- 1
- 2
- 3
- 4
- 5
- 6
总结
上面就是输入框的主要内容啦。一起来复习一下:
属性 | 意义 |
---|---|
fg或foreground | 字体颜色 |
bg或background | 背景颜色 |
selectforeground | 被选中时候的字体颜色 |
selectbackground | 被选中时候的背景颜色 |
font | 字体,可以传入一个元组,也可以传入一个字符串 |
width | 长度 |
cursor | 光标放置在输入框上时的样式 |
state | 输入框状态,如禁用(Disabled),正常(Normal) |
relief | 边框样式 |
bd或borderwidth | 边框粗细 |
show | 如何展示输入的内容 |
insertontime | 光标显示的时间 |
insertofftime | 光标被隐藏的时间 |
insertwidth | 光标粗细 |
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
哈哈,谢谢您的阅读!点个赞,关注一下呗!我们下期再见~
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |