Python tkinter(4)输入框控件

本文详细介绍了Tkinter库中的输入框控件,包括创建输入框、设置颜色、字体、长度、光标样式、状态、边框以及内容的操作,如插入、获取、删除、移动光标和选中内容。文章还展示了各种属性和方法的使用示例,帮助读者掌握Tkinter中输入框的使用技巧。
Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本


​本​文​由​J​z​w​a​l​l​i​s​e​r​原​创​,​发​布​在​C​S​D​N​平​台​上​,​遵​循​CC 4.0 BY-SA协​议​。​
​因​此​,​若​需​转​载​/​引​用​本​文​,​请​注​明​作​者​并​附​原​文​链​接​。​
​违​者​必​究​,​谢​谢​配​合​。​
​个​人​主​页​:​blog.csdn.net/jzwalliser

​引​入​

优​秀​的​t​k​i​n​t​e​r​库​还​有​那​些​控​件​呢​?​这​期​我​们​就​来​看​看​输​入​框​吧​!​

​创​建​一​个​输​入​框​

先​制​作​一​个​窗​口​,​然​后​把​输​入​框​黏​上​去​。​

import tkinter
root = tkinter.Tk()
entry = tkinter.Entry(root) #创建一个输入框
entry.pack() #把输入框放到窗口上去
root.mainloop()

==放一个图片!==

​输​入​框​的​属​性​

​颜​色​

输​入​框​可​以​改​变​它​的​颜​色​。​颜​色​包​括​字​体​颜​色​(​fg或​foreground)​、​背​景​颜​色​(​bg或​background)​、​选​中​时​的​高​亮​颜​色​(​selectbackground)​和​选​中​时​的​字​体​颜​色​(​ ​selectforeground)​。​

颜​色​可​以​用​英​语​单​词​(​如​"red"、​"blue")​来​表​示​,​也​可​以​用​H​E​X​格​式​的​颜​色​(​如​"#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()

在这里插入图片描述而​字​体​的​样​式​除​了​有​斜​体​之​外​,​还​有​以​下​几​种​:​

关​键​词​样​式​样​例​
r​o​m​a​n​正​体​字​在这里插入图片描述
i​t​a​l​i​c​斜​体​字​在这里插入图片描述
b​o​l​d​粗​体​字​在这里插入图片描述
u​n​d​e​r​l​i​n​e​下​划​线​在这里插入图片描述
o​v​e​r​s​t​r​i​k​e​杠​掉​在这里插入图片描述

​长​度​

输​入​框​只​能​设​置​其​长​度​而​不​能​设​置​其​宽​度​。​因​此​,​如​果​你​像​这​样​:​entry1 = tkinter.Entry(root,width=50,height=20),​那​么​会​报​错​。​而​长​度​并​不​是​像​素​个​数​,​而​是​一​次​性​可​现​实​的​英​文​字​母​个​数​。​也​就​是​说​,​如​果​长​度​为​5​0​,​那​么​在​不​左​右​滑​动​的​情​况​下​可​以​一​下​子​显​示​约​5​0​个​英​文​字​母​。​

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()

在这里插入图片描述
默​认​鼠​标​样​式​是​x​t​e​r​m​(​文​本​编​辑​,​工​字​形​)​,​除​此​之​外​还​有​其​它​一​些​鼠​标​样​式​,​如​a​r​r​o​w​等​。​

​状​态​

一​般​的​t​k​i​n​t​e​r​控​件​都​有​2​个​常​用​的​状​态​:​正​常​(​N​o​r​m​a​l​)​、​禁​用​(​D​i​s​a​b​l​e​d​)​,​还​有​一​些​不​常​用​的​,​如​只​读​(​R​e​a​d​o​n​l​y​)​、​活​动​(​A​c​t​i​v​e​)​,​这​里​只​介​绍​D​i​s​a​b​l​e​d​和​N​o​r​m​a​l​吧​,​因​为​另​外​两​个​实​在​太​不​常​见​了​。​

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()

在这里插入图片描述

​对​齐​方​式​

在​W​P​S​中​,​文​字​排​版​有​三​种​主​要​的​方​式​:​靠​左​、​居​中​、​靠​右​。​其​实​E​n​t​r​y​也​有​这​三​种​,​如​示​例​:​

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()

以​上​的​程​序​会​输​出​输​入​框​中​的​内​容​,​这​里​当​然​就​是​"​H​e​l​l​o​ ​W​o​r​l​d​!​!​!​"​啦​。​

​删​除​内​容​

在​这​几​种​操​作​中​,​怎​么​能​少​了​删​除​呢​!​要​删​除​输​入​框​中​的​内​容​,​就​调​用​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()用​法​稍​稍​复​杂​,​我​们​看​看​下​面​这​个​表​:​

示​例​意​思​
e​n​t​r​y​.​d​e​l​e​t​e​(​0​)​删​除​第​1​个​字​符​
e​n​t​r​y​.​d​e​l​e​t​e​(​1​)​删​除​第​2​个​字​符​
e​n​t​r​y​.​d​e​l​e​t​e​(​0​,​2​)​删​除​第​1​-2​个​字​符​
e​n​t​r​y​.​d​e​l​e​t​e​(​0​,​t​k​i​n​t​e​r​.​E​N​D​)​删​除​所​有​字​符​
e​n​t​r​y​.​d​e​l​e​t​e​(​0​,​t​k​i​n​t​e​r​.​I​N​S​E​R​T​)​从​第​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()

​总​结​

上​面​就​是​输​入​框​的​主​要​内​容​啦​。​一​起​来​复​习​一​下​:​

属​性​意​义​
f​g​或​f​o​r​e​g​r​o​u​n​d​字​体​颜​色​
b​g​或​b​a​c​k​g​r​o​u​n​d​背​景​颜​色​
s​e​l​e​c​t​f​o​r​e​g​r​o​u​n​d​被​选​中​时​候​的​字​体​颜​色​
s​e​l​e​c​t​b​a​c​k​g​r​o​u​n​d​被​选​中​时​候​的​背​景​颜​色​
f​o​n​t​字​体​,​可​以​传​入​一​个​元​组​,​也​可​以​传​入​一​个​字​符​串​
w​i​d​t​h​长​度​
c​u​r​s​o​r​光​标​放​置​在​输​入​框​上​时​的​样​式​
s​t​a​t​e​输​入​框​状​态​,​如​禁​用​(​D​i​s​a​b​l​e​d​)​,​正​常​(​N​o​r​m​a​l​)​
r​e​l​i​e​f​边​框​样​式​
b​d​或​b​o​r​d​e​r​w​i​d​t​h​边​框​粗​细​
s​h​o​w​如​何​展​示​输​入​的​内​容​
i​n​s​e​r​t​o​n​t​i​m​e​光​标​显​示​的​时​间​
i​n​s​e​r​t​o​f​f​t​i​m​e​光​标​被​隐​藏​的​时​间​
i​n​s​e​r​t​w​i​d​t​h​光​标​粗​细​
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()

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

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值