用python做用户登录系统,代码查看
import PySimpleGUI as sg # as sg的意思是把PySimpleGUI的用法重命名为sg,然后代码中如果出现PySimpleGUI,就会报错。
# 用字典镶嵌列表的方式把用户名和它们各自的密码定好
User1 = {'用户名': '老高', '密码': 'laogao123'}#这里的用户名和密码可以自己更改
User2 = {'用户名': '老张', '密码': 'laozhang456'}#这里的用户名和密码可以自己更改
User_List = [User1, User2]
# 把这个窗口里的内容设定好(layout也是一个变量)
layout = [
[sg.T('用户名', size=6), sg.In('', font=20, key='user')],
[sg.T('密码', size=6), sg.In('', font=20, key='pwd')],
[sg.B('确认'), sg.B('取消')]
]
# 给窗口起个名(就是它的标题),再定一下它的参数(窗口的内容为刚刚设好的变量layout,字体就用微软雅黑,20号大小的字)
window = sg.Window('欢迎来到python社区!请登录!', layout, font=("微软雅黑", 20))
# 为了实现监听用户的动作的效果,所以就重复地获取窗口的事件和值,重复地判断此时应该干什么
while True:
# event记录着这个窗口一切的事件(如:用户点击按钮),values记录着这个窗口中输入框的值(即用户输入的内容)
event, values = window.read()
# 如果用户点击了“确认”这个按钮,我们的这个程序就应该开始判断用户输入的内容是否正确,并通过弹窗的方式告诉用户
if event == "确认":
# 在User_List遍历user这个变量
for user in User_List:
# values['user']指的是第一个输入框的值(用户输入的用户名),user['用户名'](user在遍历的时候是个字典)指的是正确的用户名
# values['pwd']指的是第二个输入框的值(用户输入的密码),user['密码']指的是正确的密码
if values['user'] == user['用户名'] and values['pwd'] == user['密码']:
a = "登录成功!"
else:
b = "用户名或密码错误!请重新输入!"
# 如果输入错误,则a会未命名,而发生名称错误(NameError),所以要捕捉名称错误
try:
if a == "登录成功!":
sg.Popup(a)
# 用户既然输入正确,那就行了,可以退出循环(break)并结束进程了
break
except NameError:
sg.Popup(b)
# 用户输入错误,我们应该继续让用户输入内容,而并非是结束进程
# 如果用户点击了x号(WINDOW_CLOSED指的是窗口右上角的x号,它是一个常量)或点击了“取消”,就退出循环体,而之后又没有代码,就结束进程
if event == sg.WINDOW_CLOSED or event == '取消':
break
# 程序运行结束