其他分享
首页 > 其他分享> > 《tkinter实用教程七》tkinter ttk.Entry控件

《tkinter实用教程七》tkinter ttk.Entry控件

作者:互联网

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

代码执行结果,如下图所示:

tkinter entry

如何设置并获取 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()

代码执行结果如下图所示:

tkinter entry 变量绑定
变量绑定
entry变量读取

修改 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 内容的示例。

代码执行结果如下图:

tkinter内容获取
tkinter Entry 内容设置
tkinter entry 删除内容
tkinter 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()

代码执行结果如下图:

tkinter值追踪
tkinter变量绑定

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

执行结果如下:

tkinter 密码框

标签:控件,实用教程,tkinter,ttk,grid,Entry,main,root,row
来源: https://blog.csdn.net/weixin_43302112/article/details/120950769