欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python3 Tkinkter + SQLite實(shí)現(xiàn)登錄和注冊(cè)界面

 更新時(shí)間:2019年11月19日 11:51:24   作者:廣州-輝Python開發(fā)  
這篇文章主要為大家詳細(xì)介紹了Python3 Tkinkter + SQLite實(shí)現(xiàn)登錄和注冊(cè)界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Python3 Tkinkter + SQLite 實(shí)現(xiàn)登錄和注冊(cè)界面,供大家參考,具體內(nèi)容如下

Ubuntu14 + Python3.4 + Pycharm2018

一、設(shè)計(jì)數(shù)據(jù)庫

數(shù)據(jù)庫內(nèi)容(login.db):用戶名,密碼,郵箱,密碼錯(cuò)誤次數(shù)(達(dá)到三次時(shí)鎖定)

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.注冊(cè)界面代碼

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('項(xiàng)目資源管理平臺(tái)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='注冊(cè)賬號(hào)', 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) # 返回一個(gè)迭代器
    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('登錄失敗', '密碼錯(cuò)誤')
 
  def register(self):
    """注冊(cè)功能跳轉(zhuǎn)"""
    self.conn.close()
    self.page.destroy()
    RegisterPage(self.root)
 
 
class RegisterPage:
  """注冊(cè)界面"""
  def __init__(self, master=None):
    self.root = master
    self.root.title('賬號(hào)注冊(cè)')
    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="賬號(hào):").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="注冊(cè)", 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):
    """注冊(cè)"""
    if self.password0.get() != self.password1.get():
      messagebox.showwarning('錯(cuò)誤', '密碼核對(duì)錯(cuò)誤')
    elif len(self.username.get()) == 0 or len(self.password0.get()) == 0 or len(self.email.get()) == 0:
      messagebox.showerror("錯(cuò)誤", "不能為空")
    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("成功", "注冊(cè)成功,按確定返回登錄界面")
        self.page.destroy()
        LoginPage(self.root)
      except sqlite3.IntegrityError:
        messagebox.showerror("注冊(cè)失敗", "該賬戶已存在")
 
 
if __name__ == '__main__':
  root = Tk()
  LoginPage(root)
  root.mainloop()

三、實(shí)現(xiàn)效果

1.登錄界面:

 

2.注冊(cè)界面:

 

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何利用pygame實(shí)現(xiàn)打飛機(jī)小游戲

    如何利用pygame實(shí)現(xiàn)打飛機(jī)小游戲

    pygame是python的一個(gè)做游戲的庫,非常適合做游戲開發(fā),這篇文章主要給大家介紹了關(guān)于如何利用pygame實(shí)現(xiàn)打飛機(jī)小游戲的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • 詳解opencv去除背景算法的方法比較

    詳解opencv去除背景算法的方法比較

    本文主要介紹了opencv去除背景算法的方法比較,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 一文詳細(xì)介紹Python中pkl格式文件

    一文詳細(xì)介紹Python中pkl格式文件

    .pkl文件是Python中用于存儲(chǔ)對(duì)象的文件格式,全稱是"pickle",它是Python標(biāo)準(zhǔn)庫中的一個(gè)模塊,用于將Python對(duì)象序列化,以便于在不同的Python程序之間進(jìn)行傳輸或存儲(chǔ),這篇文章主要給大家介紹了如何通過一文詳細(xì)介紹Python中pkl格式文件的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • 通過python-turtle庫實(shí)現(xiàn)繪制圖畫

    通過python-turtle庫實(shí)現(xiàn)繪制圖畫

    turtle庫是python的基礎(chǔ)繪圖庫,經(jīng)常被用來給孩子們介紹編程知識(shí)的方法庫,是標(biāo)準(zhǔn)庫之一,利用turtle可以制作很多復(fù)雜的繪圖。本文將為大家介紹通過turtle庫繪制的一些有趣的圖畫,感興趣的小伙伴可以學(xué)習(xí)一下
    2021-12-12
  • python Tornado框架的使用示例

    python Tornado框架的使用示例

    這篇文章主要介紹了python Tornado框架的使用示例,幫助大家更好的利用python進(jìn)行web開發(fā),感興趣的朋友可以了解下
    2020-10-10
  • python實(shí)現(xiàn)通過代理服務(wù)器訪問遠(yuǎn)程url的方法

    python實(shí)現(xiàn)通過代理服務(wù)器訪問遠(yuǎn)程url的方法

    這篇文章主要介紹了python實(shí)現(xiàn)通過代理服務(wù)器訪問遠(yuǎn)程url的方法,涉及Python使用urllib模塊操作URL的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • 最新評(píng)論