91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python3 Tkinkter + SQLite實現登錄和注冊界面

發布時間:2020-08-28 11:11:25 來源:腳本之家 閱讀:224 作者:廣州-輝Python開發 欄目:開發技術

本文實例為大家分享了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, 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()
 
  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, 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()
 
  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.登錄界面:

 Python3 Tkinkter + SQLite實現登錄和注冊界面

2.注冊界面:

 Python3 Tkinkter + SQLite實現登錄和注冊界面

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

旬邑县| 康定县| 来安县| 宽甸| 扶余县| 茶陵县| 怀化市| 仲巴县| 荔波县| 临桂县| 武胜县| 杨浦区| 思茅市| 莱芜市| 西藏| 罗甸县| 诸城市| 安吉县| 西乌珠穆沁旗| 新巴尔虎右旗| 育儿| 玉山县| 万荣县| 沿河| 阿坝| 靖州| 榆树市| 陈巴尔虎旗| 四会市| 大足县| 中方县| 济阳县| 资溪县| 海林市| 大荔县| 澄城县| 建阳市| 白城市| 苍梧县| 靖州| 濉溪县|