Python3 Tkinkter + SQLite实现登录和注册界面
本文实例为大家分享了Python3Tkinkter+SQLite实现登录和注册界面,供大家参考,具体内容如下
Ubuntu14+Python3.4+Pycharm2018
一、设计数据库
数据库内容(login.db):用户名,密码,邮箱,密码错误次数(达到三次时锁定)
createtableloginuser( usernamevarchar(30)NOTNULLPRIMARYKEY, passwordvarchar(16)NOTNULL, emailvarcharNOTNULL, loginerrorint );
二、登录界面Tkinter
login.py
1.登录界面代码
2.注册界面代码
fromtkinterimport* importsqlite3 importtkinter.messageboxasmessagebox classLoginPage: """登录界面""" def__init__(self,master): self.root=master self.root.geometry('400x200+600+400') self.root.title('项目资源管理平台Alpha0.1') self.conn=sqlite3.connect('data/login.db') self.username=StringVar() self.password=StringVar() self.page=Frame(self.root) self.creatapage() defcreatapage(self): """界面布局""" Label(self.page).grid(row=0) Label(self.page,text='用户名:').grid(row=1,stick=W,pady=10) Entry(self.page,textvariable=self.username).grid(row=1,column=1,stick=E) Label(self.page,text='密码:').grid(row=2,stick=W,pady=10) Entry(self.page,textvariable=self.password,show='*').grid(row=2,stick=E,column=1) Button(self.page,text='登录',command=self.login).grid(row=3,stick=W,pady=10) Button(self.page,text='注册账号',command=self.register).grid(row=3,stick=E,column=1) self.page.pack() deflogin(self): """登录功能""" curs=self.conn.cursor() query="selectusername,password,loginerrorfromloginuserwhereusername='%s'"%self.username.get() curs.execute(query)#返回一个迭代器 c=curs.fetchall()#接收全部信息 iflen(c)==0: messagebox.showerror('登录失败','账户不存在') else: us,pw,lerror=c[0] iflerror>=3: messagebox.showwarning('登录失败','账户已被锁定') elifus==self.username.get()andpw==self.password.get(): self.conn.close() messagebox.showinfo('登录成功','欢迎:%s'%us) else: messagebox.showwarning('登录失败','密码错误') defregister(self): """注册功能跳转""" self.conn.close() self.page.destroy() RegisterPage(self.root) classRegisterPage: """注册界面""" def__init__(self,master=None): self.root=master self.root.title('账号注册') self.root.geometry('400x250') self.conn=sqlite3.connect('data/login.db') self.username=StringVar() self.password0=StringVar()#第一次输入密码 self.password1=StringVar()#第二次输入密码 self.email=StringVar() self.page=Frame(self.root) self.createpage() defcreatepage(self): """界面布局""" Label(self.page).grid(row=0) Label(self.page,text="账号:").grid(row=1,stick=W,pady=10) Entry(self.page,textvariable=self.username).grid(row=1,column=1,stick=E) Label(self.page,text="密码:").grid(row=2,stick=W,pady=10) Entry(self.page,textvariable=self.password0,show='*').grid(row=2,column=1,stick=E) Label(self.page,text="再次输入:").grid(row=3,stick=W,pady=10) Entry(self.page,textvariable=self.password1,show='*').grid(row=3,column=1,stick=E) Label(self.page,text="Email*:").grid(row=4,stick=W,pady=10) Entry(self.page,textvariable=self.email).grid(row=4,column=1,stick=E) Button(self.page,text="返回",command=self.repage).grid(row=5,stick=W,pady=10) Button(self.page,text="注册",command=self.register).grid(row=5,column=1,stick=E) self.page.pack() defrepage(self): """返回登录界面""" self.page.destroy() self.conn.close() LoginPage(self.root) defregister(self): """注册""" ifself.password0.get()!=self.password1.get(): messagebox.showwarning('错误','密码核对错误') eliflen(self.username.get())==0orlen(self.password0.get())==0orlen(self.email.get())==0: messagebox.showerror("错误","不能为空") else: curs=self.conn.cursor() query='insertintologinuservalues(?,?,?,?)' val=[self.username.get(),self.password0.get(),self.email.get(),0] try: curs.execute(query,val) self.conn.commit() self.conn.close() messagebox.showinfo("成功","注册成功,按确定返回登录界面") self.page.destroy() LoginPage(self.root) exceptsqlite3.IntegrityError: messagebox.showerror("注册失败","该账户已存在") if__name__=='__main__': root=Tk() LoginPage(root) root.mainloop()
三、实现效果
1.登录界面:
2.注册界面:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。