您现在的位置是:首页 > 技术教程 正文

Python tkinter(4)输入框控件

admin 阅读: 2024-03-22
后台-插件-广告管理-内容页头部广告(手机)

目录

  • 引入
  • 创建一个输入框
  • 输入框的属性
    • 颜色
    • 字体
    • 长度
    • 光标
    • 状态
    • 边框
    • 显示的字符
    • 对齐方式
    • 光标闪烁和粗细
  • 修改属性
  • 方法
    • 插入内容
    • 获取内容
    • 删除内容
    • 移动光标
    • 选中内容
  • 总结


本文由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。

import tkinter root = tkinter.Tk() entry = tkinter.Entry(root,bd=20) #厚厚的一层边框 entry.pack() #把输入框放在窗口上 root.mainloop()
  • 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光标粗细
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()
  • 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

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索