Python3 Tkinkter + SQLite實現登入和註冊介面
阿新 • • 發佈:2020-01-09
本文例項為大家分享了Python3 Tkinkter + SQLite 實現登入和註冊介面,供大家參考,具體內容如下
Ubuntu14 + Python3.4 + Pycharm2018
一、設計資料庫
資料庫內容(login.db):使用者名稱,密碼,郵箱,密碼錯誤次數(達到三次時鎖定)
create table loginuser ( username varchar(30) NOT NULL PRIMARY KEY,password varchar(16) NOT NULL,email varchar NOT NULL,loginerror int );
二、登入介面Tkinter
login.py
1.登入介面程式碼
2.註冊介面程式碼
from tkinter import * import sqlite3 import tkinter.messagebox as messagebox class LoginPage: """登入介面""" 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() def creatapage(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,textvariable=self.password,show='*').grid(row=2,stick=E,column=1) Button(self.page,text='登入',command=self.login).grid(row=3,pady=10) Button(self.page,text='註冊賬號',command=self.register).grid(row=3,column=1) self.page.pack() def login(self): """登入功能""" curs = self.conn.cursor() query = "select username,password,loginerror from loginuser where username='%s'" % self.username.get() curs.execute(query) # 返回一個迭代器 c = curs.fetchall() # 接收全部資訊 if len(c) == 0: messagebox.showerror('登入失敗','賬戶不存在') else: us,pw,lerror = c[0] if lerror >= 3: messagebox.showwarning('登入失敗','賬戶已被鎖定') elif us == self.username.get() and pw == self.password.get(): self.conn.close() messagebox.showinfo('登入成功','歡迎:%s' % us) else: messagebox.showwarning('登入失敗','密碼錯誤') def register(self): """註冊功能跳轉""" self.conn.close() self.page.destroy() RegisterPage(self.root) class RegisterPage: """註冊介面""" 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() def createpage(self): """介面佈局""" Label(self.page).grid(row=0) Label(self.page,text="賬號:").grid(row=1,text="密碼:").grid(row=2,textvariable=self.password0,text="再次輸入:").grid(row=3,textvariable=self.password1,show='*').grid(row=3,text="Email*:").grid(row=4,textvariable=self.email).grid(row=4,stick=E) Button(self.page,text="返回",command=self.repage).grid(row=5,text="註冊",command=self.register).grid(row=5,stick=E) self.page.pack() def repage(self): """返回登入介面""" self.page.destroy() self.conn.close() LoginPage(self.root) def register(self): """註冊""" if self.password0.get() != self.password1.get(): messagebox.showwarning('錯誤','密碼核對錯誤') elif len(self.username.get()) == 0 or len(self.password0.get()) == 0 or len(self.email.get()) == 0: messagebox.showerror("錯誤","不能為空") else: curs = self.conn.cursor() query = 'insert into loginuser values (?,?,?)' 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) except sqlite3.IntegrityError: messagebox.showerror("註冊失敗","該賬戶已存在") if __name__ == '__main__': root = Tk() LoginPage(root) root.mainloop()
三、實現效果
1.登入介面:
2.註冊介面:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。