Entry
在GUI界面下,有时需要输入一些内容供我们接受,例如在一个登录界面,我们可能需要接受用户输入的账号、密码以及验证码等信息,这个时候可以考虑使用Entry单行输入组件。
Entry组件的常用属性
Entry输入的值需要使用变量进行接受,Tkinter里面有以下四种:StringVar(),BooleanVar(),IntVar()和DoubleVar(),分别对应字符串、布尔值、整数和浮点数。
一些常用属性在这里不做介绍,想了解可以看之前的文章。主要介绍以下两个:
(1)textvariable:关联变量,即将接受的值传递到哪个变量上去
使用其set方法设置初始,get方法获得该变量的值 ,get方法可以作用在该变量上,也可以作用在改组件上
eg: v1=StringVar()
Entry01= Entry(master=self. textvariable=v1)
则使用va.get()或者Entry01.get()都可以获取该文本框的内容
(2)show:表示显示给用户的内容,通常用在一些密码输入上,例如输入密码全部展示成*号等。
综合案例
设计一个登录界面,界面显示以下内容:提示用户输入账号和密码的文本框,一个登录按钮,一个退出按钮,点击登录按钮需要进行检查账户和密码是否对应,这里用简单的if语句判断即可。实际操作时可以连接数据库进行修改,最后推出按钮点击的话直接关闭程序。为了保护隐私,需要输入的密码显示成*。
我们依旧使用前面的经典写法,在*CreateWidgets()*方法中进行书写
from tkinter import *
from tkinter import messagebox
from PIL import Image, ImageTk
class Application(Frame):
def __init__(self, master):
super().__init__(master)
self.pack()
self.CreateWidget()
def CreateWidget(self):
# 设置登录框
self.label01 = Label(master=self, text='用户名')
self.label01.pack()
v1 = StringVar()
self.entry01 = Entry(master=self, textvariable=v1)
self.entry01.pack()
# 设置密码框
self.label02 = Label(master=self, text='密码')
self.label02.pack()
v2 = StringVar()
self.entry02 = Entry(master=self, textvariable=v2, show='*')
self.entry02.pack()
# 设置登录按钮
self.btn_login = Button(master=self, text='登录', command=self.login)
self.btn_login.pack()
# 设置退出按钮
self.btnQuit = Button(master=self, text='退出', command=self.master.destroy)
self.btnQuit.pack()
def login(self):
print(f"用户名:{self.entry01.get()},密码:{self.entry02.get()}")
if (self.entry01.get()=='admin') and (self.entry02.get()=='admin'):
messagebox.showinfo('登录','登陆成功,欢迎进入系统!')
else:
messagebox.showerror('Error','用户名或密码错误,请检查后重试!')
运行后主界面如下所示:
由于这里我们默认的账户和密码都是"admin",所以我们先尝试正确的账户密码输入的情况,并点击登录,显示如下效果:
当我们输入的账号或者密码错误的时候,会出现以下错误提示:
因为错误这里用的是showerror方法,所以显示的图标会不一样。点击退出后该界面会自动销毁。程序运行正常。