tkinter ttk.Entry 输入控件
ttk.Entry
控件为用户展示一个单行的文本输入框,可以输入一个字符串值,比如名字、地址、手机号等等。
如何创建一个 ttk.Entry
对象
创建输入框对象,需要使用 ttk.Entry
类,代码使用案例如下:
from tkinter import *
from tkinter import ttk
root = Tk()
main = ttk.Frame(root)
name = ttk.Entry(main,width=12)
main.grid()
name.grid()
root.mainloop()
代码执行结果,如下图所示:
如何设置并获取 ttk.Entry
控件内容
和 ttk.Label
控件一样,ttk.Entry
控件可以通过 textvariable
控件设置并获取其内容。
示例代码如下:
from tkinter import *
from tkinter import ttk
def click():
btn['text']=namestr.get()
root = Tk()
main = ttk.Frame(root)
namestr = StringVar()
namestr.set("小明") # 设置 Entry 控件内容
name = ttk.Entry(main,width=12,textvariable=namestr)
l = ttk.Label(main,width=12,textvariable=namestr)
btn = ttk.Button(main,text="Get",command=click)
main.grid()
name.grid(column=0,row=0)
l.grid(column=0,row=1)
btn.grid(column=0,row=2)
root.mainloop()
代码执行结果如下图所示:
修改 ttk.Entry
中的内容,ttk.Label
会同步展示其中的值,点击按钮之后,按钮中的值也变成了 ttk.Entry
中的内容。
设置并获取 ttk.Entry
值的另一种方式
除了以上通过 textvariable
的方式指定和获取 ttk.Entry
的值之外,还可以用 get()
方法获取内容,使用 insert()
和 delete()
方法设置内容。
示例代码如下:
from tkinter import *
from tkinter import ttk
def setvar():
name.insert(0,"小明是个好同志")
def delvar():
name.delete(0,1)
def getvar():
l['text']=name.get()
root = Tk()
main = ttk.Frame(root)
name = ttk.Entry(main,width=12)
l = ttk.Label(main,width=12)
btn = ttk.Button(main,text="设置内容",command=setvar)
btn_del = ttk.Button(main,text="删除内容",command=delvar)
btn_get = ttk.Button(main,text="获取内容",command=getvar)
main.grid()
name.grid(column=0,row=0)
l.grid(column=0,row=1)
btn.grid(column=0,row=2)
btn_del.grid(column=0,row=3)
btn_get.grid(column=0,row=4)
root.mainloop()
以上代码,创建了一个可以通过点击按钮设置、修改、获取 ttk.Entry
内容的示例。
代码执行结果如下图:
ttk.Entry
值监控
我们经常在输入内容时验证输入内容是否合法,这就需要监听 ttk.Entry
的读写操作。
以下代码,在 ttk.Entry
被写入,被读取的时候都会触发对应的函数,执行响应的操作。
from tkinter import *
from tkinter import ttk
def written(*args): # 变量写入时执行
l['text']="变量被写入"
def readed(*args): # 变量读取时执行
l['text']="变量被读取"
def read():
username.get()
def remove_trace():
username.trace_remove('write',vw) # 删除追踪操作
root = Tk()
main = ttk.Frame(root)
username = StringVar()
name = ttk.Entry(main,width=12,textvariable=username)
vw = username.trace_add("write",written) # 追踪变量值的写变化
vr = username.trace_add("read",readed) # 追踪变量值的读变化
l = ttk.Label(main)
btnread=ttk.Button(main,text="read var" ,command=read)
btn = ttk.Button(main,text="remove trace",command=remove_trace)
main.grid()
name.grid(column=0,row=0)
l.grid(column=0,row=1)
btnread.grid(column=0,row=2)
btn.grid(column=0,row=3)
root.mainloop()
代码执行结果如下图:
把 ttk.Entry
当作密码框使用
代码如下:
from tkinter import *
from tkinter import ttk
root = Tk()
main = ttk.Frame(root)
password = StringVar()
pwd = ttk.Entry(main,textvariable=password,show="*")
main.grid()
pwd.grid(column=0,row=0)
root.mainloop()
执行结果如下: