利用tkinter連接mysql實現簡單的登錄功能

Python火熱起來,在數據分析、信息爬取等方面給我們帶來了很多便捷,但是Python的作用不僅僅在於此,我們見到太多Python程序都是一個漆黑的控制檯,其實Python也有很多好看的界面。這裏,筆者爲大家帶來一個簡易的登錄界面製作,並且連接到MySQL數據庫驗證賬號密碼的正確性,以控制訪問用戶。

<<<<<<<<<<<<<<<<<大神請繞道>>>>>>>>>>>>>>>>

首先需要安裝pymysql和tkinter兩個模塊庫,可以採用cmd指令安裝

pip install pymysql
pip install tkinter

安裝mysql數據庫請參考以下教程:

https://blog.csdn.net/weixin_43792401/article/details/101624265

使用mysql創建數據庫test,和用戶表user

數據庫表創建好,就可以使用python製作tkinter的登錄界面了,登錄包括登錄驗證,退出程序。

其中登錄驗證必須在驗證密碼成功和密碼錯誤時都彈出對話框。

import tkinter as tk
import pymysql

def success_tip(username):
    root.destroy()
    root1 = tk.Tk()
    root1.title('通知信息')
    welcome = username+',歡迎您!!!'
    tk.Label(root1,text=welcome,font=36).pack(padx=100,pady=100)
    root1.mainloop()

def fail_tip():
    root2 = tk.Tk()
    root2.title('錯誤提示')
    tk.Label(root2,text='登錄失敗!密碼錯誤或者賬號不存在!',font=18,fg='red').pack(padx=20,pady=20)
    root2.mainloop()

def auto_login():
    #連接數據庫
    db = pymysql.connect(host='localhost',user='數據庫用戶名',password='數據庫密碼',db='test',port=3306)
    #獲取操作遊標
    cur = db.cursor()
    #查詢數據庫
    sql = 'select * from user'
    entry1 = input1.get()
    entry2 = input2.get()
    flag = True
    try:
        cur.execute(sql)    #執行查詢
        results = cur.fetchall()    #獲取所有查詢數據
        for row in results:
            uid = row[4]    #賬號
            pwd = row[5]    #密碼
            #判斷輸入的賬號和密碼是否正確
            if entry1 == uid and entry2 == pwd:
                print('登錄成功')
                username = row[0]
                success_tip(username)
                flag = True
                break
            else:
                flag = False
        if flag == False:
            fail_tip()
    except Exception as e:
        print('登錄異常')

def exit_login():
    root.destroy()
    pass

def frame():
    global root
    root = tk.Tk()
    root.title('登錄窗口')
    v1 = tk.StringVar()
    v2 = tk.StringVar()
    #賬號標籤,位置在第0行第0列
    tk.Label(root,text='賬號:').grid(row=0,column=0)
    #密碼標籤,位置在第1行第0列
    tk.Label(root,text='密碼:').grid(row=1,column=0)
    #賬號輸入框
    global input1
    input1 = tk.Entry(root,textvariable=v1)
    input1.grid(row=0,column=1,padx=10,pady=5)
    #密碼輸入框
    global input2
    input2 = tk.Entry(root,textvariable=v2,show='*')
    input2.grid(row=1,column=1,padx=10,pady=5)
    #登錄按鈕
    tk.Button(root,text='登錄',width=10,command=auto_login).grid(row=3,column=0,sticky=tk.W,padx=10,pady=5)
    #退出按鈕
    tk.Button(root,text='退出',width=10,command=exit_login).grid(row=3,column=1,sticky=tk.E,padx=10,pady=5)
    root.mainloop()

if __name__ == '__main__':
    frame()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章