教你用Python的字典,创建tkinter的登录页面(可注册用户密码,已实测)
网上找了很久,也没找到好一点的代码,索性也就自己写了……
运行没什么问题
唯一的缺点就是,退出后,会恢复默认值,所以账户密码什么的,得重新注册了……
不过好在没什么具体影响,无伤大雅)……
下面话不多说,直接放源代码,拿走不谢,求好评点赞收藏(因为忙,所以暂时不回复提问,谢谢!)^v^
########################################################
# 调用tkinter库
import tkinter as tk
#调用弹窗页面
import tkinter.messagebox
#定义一个字典存放用户和密码:
global users
#默认字典登录用户和密码
users={"dianzan":"123456","a":"a"}
#建立基本一级界面
def tkint(title, text):
# 建立GUI界面
window = tk.Tk()
window.title("{}".format(title))
window.geometry('1280x720')
#标题的建立,代码如下
var = tk.StringVar()
ul = tk.Label(window, text='{}'.format(text), bg='lavender', font=('行书', 14), width=50, height=5)
ul.pack()
#定义e2为全局变量,e1是加密,e2是显示内容,var1,var2是获取到的用户和密码字符串变量,pp1,pp2是另外的赋值变量
global e2,e1,var1,var2,pp1,pp2
#用户输入框
var1= tk.StringVar()
e2 = tk.Entry(window, show=None,textvariable=var1, font=('Arial',14),width=50)
e2.place(x=360,y=200)
#密码输入框
var2= tk.StringVar()
e1 = tk.Entry(window, show='*',textvariable=var2,font=('Arial', 14),width=50)
e1.place(x=360,y=400)
#用户的文本摆放
lb1=tk.Label(window,text="用户",bg='white',font=('幼圆', 14), width=6, height=3)
lb1.place(x=290,y=180)
#密码的文本摆放
lb2=tk.Label(window,text="密码",bg='white',font=('幼圆', 14), width=6, height=3)
lb2.place(x=290,y=380)
#提示默认的密码和文本
lb2=tk.Label(window,text="默认账户:dianzan 密码:123456",bg='lavender',font=('行书', 14), width=50, height=3)
lb2.place(x=360,y=530)
#自定义登录点击事件
def denglu():
pp1,pp2=var1.get(),var2.get()#将用户和密码分别重新赋值给另一个变量(方便写代码)
if pp1 in users and users[pp1]==pp2:
tkinter.messagebox.showinfo(title="提示:",message="登录成功!")
print("登陆成功")
elif pp1=="" or pp2=="":
tkinter.messagebox.showinfo(title="提示:",message="请输入用户名或者密码")
print("请输入用户名或者密码")
elif pp1 not in users and(pp1!="" or pp2!=""):
tkinter.messagebox.showinfo(title="提示:",message="没有此用户,请注册")
print("没有账号,请注册")
elif pp1 in users and users[pp1]!=pp2 and(pp1!="" or pp2!=""):
tkinter.messagebox.showinfo(title="提示:",message="密码错误")
print("密码错误")
#清空登录输入
e1.delete("0","end")
#清空密码输入
e2.delete("0","end")
#登录按钮 设置点击事件
butsousuo=tk.Button(window,text="登录",command=denglu,font=('隶书', 16),activeforeground="pink",
activebackground="light blue",pady=8)
butsousuo.place(x=370,y=450)
#注册点击事件
def zhuce():
pp1,pp2=var1.get(),var2.get()#将用户和密码分别重新赋值给另一个变量(方便写代码)
if pp1 in users:
tkinter.messagebox.showinfo(title="提示:",message="用户名已存在,请修改")
print("用户名已存在,请修改")
elif pp1=="" and pp2=="":
tkinter.messagebox.showinfo(title="提示:",message="用户名和密码不能为空!")
print("用户名和密码不能为空!")
elif pp1!="" and pp2=="":
tkinter.messagebox.showinfo(title="提示:",message="密码不能为空!")
print("密码不能为空!")
elif pp1=="" and pp2!="":
tkinter.messagebox.showinfo(title="提示:",message="用户名不能为空!")
print("用户名不能为空!")
elif pp1!="" and pp2=="":
tkinter.messagebox.showinfo(title="提示:",message="密码不能为空!")
print("密码不能为空!")
elif pp1 not in users and pp1!="":
users[pp1]=pp2 #将新用户和密码写入字典
tkinter.messagebox.showinfo(title="提示:",message="注册成功!")
print("注册成功")
#清空登录输入
e1.delete("0","end")
#清空密码输入
e2.delete("0","end")
#注册按钮 设置点击事件
butsousuo=tk.Button(window,text="注册",command=zhuce,font=('隶书', 16),activeforeground="pink",
activebackground="light blue",pady=8)
butsousuo.place(x=800,y=450)
#返回窗口页面
return window
#设置窗口框的页面文字,窗口里面的标题
window = tkint('用户登录', '用户登录页面')
#调用mainloop函数,开始循环
window.mainloop()
####################################################
然后最终效果是这样的:









