在学习tkinter模块,看到有一个练习是实现登录的,我刚好又在学习面向对象,所以把这两个相结合,实现登录验证,登录成功,就自动打开百度页面
from tkinter import *
import webbrowser # 用来打开网页的模块
class login_test:
def __init__(self):
self.root = Tk()
# 设置窗口标题
self.root.title('登录测试')
# 设置窗口大小以及在屏幕的位置 widthxheight+x+y
self.root.geometry('300x200+500+500')
# 创建一个标签对象,并放在第0行第0列的位置上
# grid()用来设置组件的位置的,需要传入row-行,column-列, sticky有四个值NESW,分别表示北东南西
Label(self.root, text='用户名:').grid(row=0, column=0, sticky=W)
# 创建一个文本输入框对象,并放在第0行第1列的位置上
self.username = Entry(self.root)
self.username.grid(row=0, column=1, sticky=E)
# 创建一个标签对象,并放在第1行第0列的位置上
Label(self.root, text='密码:').grid(row=1, column=0, sticky=W)
# 创建一个文本输入框对象,并放在第1行第1列的位置上
self.password = Entry(self.root)
# 将输入的内容用字符*号显示
self.password['show'] = '*'
self.password.grid(row=1, column=1, sticky=E)
# 创建个标签,用来显示用户名和密码的验证情况
self.label = Label(self.root, text='')
self.label.grid(row=2, column=0, sticky=W)
# 创建一个按钮, command表示点击按钮后要执行的事件,它的值是一个函数名,不需要加()
Button(self.root, text='登录', command=self.check).grid(row=2, column=1, sticky=E)
# 让应用程序保持循环
self.root.mainloop()
def check(self):
# get()用来获取输入框的值
username = self.username.get()
password = self.password.get()
# 验证用户名和密码的逻辑代码
if username == 'abc':
if password == '123456':
# 修改标签内容
self.label['text'] = '恭喜,登录成功'
# 修改文字的颜色
self.label['fg'] = 'black'
# 登录成功后,自动打开百度页面
webbrowser.open('http://www.baidu.com')
else:
self.label['text'] = '登录失败,密码输入错误'
self.label['fg'] = 'red'
# delete() 用来删除输入框中输入的内容,第一个参数是删除的起始位置,第二个是删除的末尾位置(不包含)
self.password.delete(0, len(password))
else:
self.label['text'] = '没有此用户名'
self.label['fg'] = 'red'
self.username.delete(0, len(username))
self.password.delete(0, len(password))
if __name__ == '__main__':
login_test()
做出来的界面,用户名和密码登录正确后会打开百度页面,自己可以去试试:
练习|使用tkinter实现登录验证
在学习tkinter模块,看到有一个练习是实现登录的,我刚好又在学习面向对象,所以把这两个相结合,实现登录验证,登录成功,就自动打开百度页面
from tkinter import *
import webbrowser # 用来打开网页的模块
class login_test:
def __init__(self):
self.root = Tk()
# 设置窗口标题
self.root.title('登录测试')
# 设置窗口大小以及在屏幕的位置 widthxheight+x+y
self.root.geometry('300x200+500+500')
# 创建一个标签对象,并放在第0行第0列的位置上
# grid()用来设置组件的位置的,需要传入row-行,column-列, sticky有四个值NESW,分别表示北东南西
Label(self.root, text='用户名:').grid(row=0, column=0, sticky=W)
# 创建一个文本输入框对象,并放在第0行第1列的位置上
self.username = Entry(self.root)
self.username.grid(row=0, column=1, sticky=E)
# 创建一个标签对象,并放在第1行第0列的位置上
Label(self.root, text='密码:').grid(row=1, column=0, sticky=W)
# 创建一个文本输入框对象,并放在第1行第1列的位置上
self.password = Entry(self.root)
# 将输入的内容用字符*号显示
self.password['show'] = '*'
self.password.grid(row=1, column=1, sticky=E)
# 创建个标签,用来显示用户名和密码的验证情况
self.label = Label(self.root, text='')
self.label.grid(row=2, column=0, sticky=W)
# 创建一个按钮, command表示点击按钮后要执行的事件,它的值是一个函数名,不需要加()
Button(self.root, text='登录', command=self.check).grid(row=2, column=1, sticky=E)
# 让应用程序保持循环
self.root.mainloop()
def check(self):
# get()用来获取输入框的值
username = self.username.get()
password = self.password.get()
# 验证用户名和密码的逻辑代码
if username == 'abc':
if password == '123456':
# 修改标签内容
self.label['text'] = '恭喜,登录成功'
# 修改文字的颜色
self.label['fg'] = 'black'
# 登录成功后,自动打开百度页面
webbrowser.open('http://www.baidu.com')
else:
self.label['text'] = '登录失败,密码输入错误'
self.label['fg'] = 'red'
# delete() 用来删除输入框中输入的内容,第一个参数是删除的起始位置,第二个是删除的末尾位置(不包含)
self.password.delete(0, len(password))
else:
self.label['text'] = '没有此用户名'
self.label['fg'] = 'red'
self.username.delete(0, len(username))
self.password.delete(0, len(password))
if __name__ == '__main__':
login_test()
做出来的界面,用户名和密码登录正确后会打开百度页面,自己可以去试试: