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

Python中tkinter的用戶登錄管理的實現(xiàn)

 更新時間:2021年04月22日 11:32:52   作者:海膽奶油飯  
這篇文章主要介紹了Python中tkinter的用戶登錄管理的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

內(nèi)容

編寫一個用戶登錄管理程序,設(shè)計窗體的布局,制定密碼規(guī)則和驗證碼規(guī)則。要求使用 Python 標準庫 tkinter 編寫基于GUI 的用戶登錄窗體。通過該窗體,用戶輸入用戶名、密碼和驗證碼等信息,確認登錄后需要判斷用戶信息是否合法,并彈出對應(yīng)的反饋信息。通過判斷用戶是否在用戶信息中,以及輸入密碼是否與用戶信息文件中用戶名所對應(yīng)的密碼是否相同,來判斷用戶是否合法。此外,新用戶還可以進行注冊,注冊需要輸入用戶名、密碼、手機號和身份證號等信息。注冊時密碼需要遵循一定規(guī)則(長度不小于8且含有數(shù)字、字母和特殊字符),注冊后將用戶信息存儲到文件中,更新用戶信息文件。步驟

流程圖

代碼

from tkinter import *
from tkinter import messagebox
import os
import xlrd
from xlutils.copy import copy

login=Tk()
login.title('登錄界面')
# 設(shè)計窗口大小
login.geometry('210x200')

# 設(shè)計GUI用戶登錄窗體
Label(login,text="用戶登錄").grid(row=0,column=0,columnspan=2)
Label(login,text="用戶名").grid(row=1,column=0)
name=Entry(login)
name.grid(row=1,column=1)
Label(login,text="密碼:").grid(row=2,column=0)
passWord=Entry(login,show='●')
passWord.grid(row=2,column=1)
Label(login,text="驗證碼:").grid(row=3,column=0,sticky=E)
verifyCode=Entry(login)
verifyCode.grid(row=3,column=1)

# 判斷用戶是否在用戶信息.xls文件中
def isInExcel(data):
    filename = "用戶信息.xls"
    excel = xlrd.open_workbook(filename, encoding_override="utf-8")
    sheet = excel.sheets()[0]

    sheet_row_mount = sheet.nrows # 行數(shù)
    sheet_col_mount = sheet.ncols # 列數(shù)

    sheet_name = []
    # 所有用戶名信息
    for x in range(1, sheet_row_mount):
        y = 0
        sheet_name.append(sheet.cell_value(x, y))

    for x in sheet_name:
        # 找到用戶名
        if (data == x):
            # 已有用戶
            return 1
            break;
    # 未注冊用戶
    return -1

# 用戶存在時,判斷密碼是否正確
def isPasswordDirect(data,passWord):
    filename = "用戶信息.xls"
    excel = xlrd.open_workbook(filename, encoding_override="utf-8")
    sheet = excel.sheets()[0]

    sheet_row_mount = sheet.nrows # 行數(shù)
    sheet_col_mount = sheet.ncols # 列數(shù)

    sheet_name = []
    # 所有用戶名信息
    for x in range(1, sheet_row_mount):
        y = 0
        sheet_name.append(sheet.cell_value(x, y))
    sheet_passWord=[]
    # 所有密碼信息
    for x in range(1, sheet_row_mount):
        y = 1
        sheet_passWord.append(sheet.cell_value(x, y))

    for i in range(len(sheet_name)):
        if(data==sheet_name[i]):
            # 記錄用戶名在數(shù)組中的位置
            record=i
            break

    for i in range(len(sheet_passWord)):
        if(passWord==sheet_passWord[i]):
            # 判斷用戶名位置與密碼位置是否相同
            # 以及密碼是否與用戶信息中的密碼一致
            if(i==record):
                # 密碼正確
                return 1
                break
    # 密碼錯誤
    return -1

def successful():
    # 判斷用戶名不存在
    if (isInExcel(name.get())==-1):
        messagebox.showerror(title='wrong', message='用戶不存在,請注冊')
    # 密碼不正確
    elif (isPasswordDirect(name.get(),passWord.get())==-1):
        messagebox.showerror(title='wrong', message='密碼不正確')
    # 驗證碼位數(shù)不正確
    elif len(verifyCode.get())!=4:
        messagebox.showerror(title='wrong',message='驗證碼應(yīng)為4位')
    else:
        messagebox.showinfo(title='successful',message='登錄成功')
Button(login, text='發(fā)送驗證碼').grid(row=4, column=0, columnspan=3)
Button(login,text='登錄',command=successful).grid(row=5,column=0,columnspan=3)

# 設(shè)計用戶注冊GUI界面
def registereds():
    registered=Tk()
    registered.title('registered')
    registered.geometry('230x185')
    Label(registered, text='用戶注冊').grid(row=0, column=0, columnspan=2)
    Label(registered, text='用戶名:').grid(row=1, column=0, sticky=E)
    names = Entry(registered)
    names.grid(row=1, column=1)
    Label(registered, text='密碼:').grid(row=2, column=0, sticky=E)
    passwds = Entry(registered, show='●')
    passwds.grid(row=2, column=1)
    Label(registered, text='確認密碼:').grid(row=3, column=0)
    repasswd = Entry(registered, show='●')
    repasswd.grid(row=3, column=1)
    Label(registered, text='手機號:').grid(row=4, column=0, sticky=E)
    phonenum = Entry(registered)
    phonenum.grid(row=4, column=1)
    Label(registered, text='身份證號:').grid(row=5, column=0)
    man = Entry(registered)
    man.grid(row=5, column=1)

    # 判斷是否含有特殊符號
    def teshufuhao(input_psd):
        string = "~!@#$%^&*()_+-*/<>,.[]\/"
        for i in string:
            if i in input_psd:
                return True
        return False

    def registeredes():
        # 密碼長度小于8
        if len(passwds.get()) < 8:
            messagebox.showerror(title='wrong', message='注冊失敗,密碼不應(yīng)少于8位')
        # 密碼不同時含有數(shù)字、字母和特殊符號
        elif not (any([x.isdigit() for x in passwds.get()]) and any([x.isalpha() for x in passwds.get()]) and teshufuhao(
                passwds.get())):
            messagebox.showerror(title='wrong', message='注冊失敗,密碼格式錯誤,必須包括字母和數(shù)字以及特殊符號')
        # 兩次密碼輸入不一樣
        elif passwds.get() != repasswd.get():
            messagebox.showerror(title='wrong', message='注冊失敗,兩次密碼不相同')
        # 手機號不正確
        elif not (phonenum.get().isdigit() and len(phonenum.get()) == 11):
            messagebox.showerror(title='wrong', message='注冊失敗,請輸入正確的11位手機號')
        # 身份證號不正確
        elif len(man.get()) != 18:
            messagebox.showerror(title='wrong', message='注冊失敗,請輸入正確的18位身份證號')
        else:
            messagebox.showinfo(title='successful', message='注冊成功!')
            # 將新用戶信息存入用戶信息文件
            excel = xlrd.open_workbook('用戶信息.xls')
            sheet = excel.sheets()[0]

            nrow = sheet.nrows # 文件行數(shù)

            wb = copy(excel)
            w_sheet = wb.get_sheet(0)
            # 從數(shù)據(jù)下一行開始寫入新用戶信息
            w_sheet.write(nrow, 0, names.get())
            w_sheet.write(nrow, 1, repasswd.get())
            w_sheet.write(nrow, 2, phonenum.get())
            w_sheet.write(nrow, 3, man.get())

            wb.save('用戶信息.xls')

    Button(registered, text='注冊', command=registeredes).grid(row=6, column=0, columnspan=3)


Button(login, text='注冊', command=registereds).grid(row=6, column=0, columnspan=3)
login.mainloop()

結(jié)果

(1)密碼正確(對照用戶信息文件輸入密碼),結(jié)果顯示登錄成功


(2)密碼不正確,結(jié)果顯示密碼不正確

(3)密碼正確,驗證碼位數(shù)不對

(4)用戶名不存在


5. 注冊新用戶

(1)新用戶寫入用戶信息文件


(2)再次登錄,用戶登錄成功

到此這篇關(guān)于Python中tkinter的用戶登錄管理的實現(xiàn)的文章就介紹到這了,更多相關(guān)tkinter用戶登錄管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在linux下實現(xiàn) python 監(jiān)控usb設(shè)備信號

    在linux下實現(xiàn) python 監(jiān)控usb設(shè)備信號

    今天小編就為大家分享一篇在linux下實現(xiàn) python 監(jiān)控usb設(shè)備信號,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python?PaddleGAN實現(xiàn)照片人物性別反轉(zhuǎn)

    Python?PaddleGAN實現(xiàn)照片人物性別反轉(zhuǎn)

    PaddleGAN中的styleganv2editing.py是支持性別編輯的。所以本文將介紹如何通過調(diào)整參數(shù),來試著實現(xiàn)一下照片的性別翻轉(zhuǎn)。感興趣的小伙伴可以學(xué)習(xí)一下
    2021-12-12
  • 詳解Python圖像形態(tài)學(xué)處理(開運算,閉運算,梯度運算)

    詳解Python圖像形態(tài)學(xué)處理(開運算,閉運算,梯度運算)

    數(shù)學(xué)形態(tài)學(xué)(Mathematical Morphology)是一種應(yīng)用于圖像處理和模式識別領(lǐng)域的新方法。本文將為大家介紹Python圖像形態(tài)學(xué)處理中的開運算、閉運算和梯度運算,感興趣的可以了解一下
    2022-06-06
  • 基于Python爬取51cto博客頁面信息過程解析

    基于Python爬取51cto博客頁面信息過程解析

    這篇文章主要介紹了基于Python爬取51cto博客頁面信息過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • Python讀取大量Excel文件并跨文件批量計算平均值的方法

    Python讀取大量Excel文件并跨文件批量計算平均值的方法

    這篇文章主要介紹了Python讀取大量Excel文件并跨文件批量計算平均值,介紹基于Python語言,實現(xiàn)對多個不同Excel文件進行數(shù)據(jù)讀取與平均值計算的方法,需要的朋友可以參考下
    2023-02-02
  • Python實現(xiàn)多線程抓取網(wǎng)頁功能實例詳解

    Python實現(xiàn)多線程抓取網(wǎng)頁功能實例詳解

    這篇文章主要介紹了Python實現(xiàn)多線程抓取網(wǎng)頁功能,結(jié)合具體實例形式詳細分析了Python多線程編程的相關(guān)操作技巧與注意事項,并附帶demo實例給出了多線程抓取網(wǎng)頁的實現(xiàn)方法,需要的朋友可以參考下
    2017-06-06
  • 使用python實現(xiàn)baidu hi自動登錄的代碼

    使用python實現(xiàn)baidu hi自動登錄的代碼

    使用python自動登錄baidu hi的代碼,有需要的朋友可以參考下
    2013-02-02
  • Python使用Pygame繪制時鐘

    Python使用Pygame繪制時鐘

    這篇文章主要為大家詳細介紹了Python使用Pygame繪制時鐘,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • python實現(xiàn)三種隨機請求頭方式

    python實現(xiàn)三種隨機請求頭方式

    這篇文章主要介紹了python實現(xiàn)三種隨機請求頭方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python解壓TAR文件至指定文件夾的實例

    python解壓TAR文件至指定文件夾的實例

    今天小編就為大家分享一篇python解壓TAR文件至指定文件夾的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06

最新評論