當前位置: 妍妍網 > 碼農

Python實作註冊登入功能

2024-04-23碼農

大家好!今天給你們帶來了python註冊登入例項,功能是透過tk和sqlite實作。

「完整程式碼」

import sqlite3
from tkinter import Tk, Label, Entry, Button, messagebox, W, E
#初始化資料庫和使用者表
def init_db():
conn = sqlite3.connect('users.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS users
(username TEXT PRIMARY KEY, password TEXT)'
'')
conn.commit()
conn.close()
init_db()
#註冊使用者的函式
def register_user():
username = username_entry.get()
password = password_entry.get()
conn = sqlite3.connect('users.db')
c = conn.cursor()
c.execute("INSERT INTO users VALUES (?, ?)", (username, password))
conn.commit()
conn.close()
messagebox.showinfo("成功""使用者註冊成功!")
root.destroy()
#登入使用者的函式
def login_user():
username = username_entry_login.get()
password = password_entry_login.get()
conn = sqlite3.connect('users.db')
c = conn.cursor()
c.execute("SELECT * FROM users WHERE username = ? AND password = ?", (username, password))
 user = c.fetchone()
conn.close()
if user:
messagebox.showinfo("成功""登入成功!")
root.destroy()
else:
messagebox.showerror("錯誤""使用者名稱或密碼錯誤!")
#切換到登入界面
def switch_to_login():
root.destroy()
create_login_ui()
#切換到註冊界面
def switch_to_register():
root.destroy()
create_register_ui()
#建立註冊界面
def create_register_ui():
global root, username_entry, password_entry
root = Tk()
root.title("使用者註冊")
#使用者名稱標簽和輸入框
Label(root, text="使用者名稱:").grid(row=0, column=0, sticky=W, padx=10, pady=10)
username_entry = Entry(root)
username_entry.grid(row=0, column=1, padx=10, pady=10)
#密碼標簽和輸入框
Label(root, text="密碼:").grid(row=1, column=0, sticky=W, padx=10, pady=10)
password_entry = Entry(root, show="*")
password_entry.grid(row=1, column=1, padx=10, pady=10)
#註冊按鈕
Button(root, text="註冊"command=register_user).grid(row=2, column=0, padx=10, pady=10)
#切換到登入界面的按鈕
Button(root, text="已有帳號?去登入"command=switch_to_login).grid(row=2, column=1, padx=10, pady=10)
root.mainloop()
#建立登入界面
def create_login_ui():
global root, username_entry_login, password_entry_login
root = Tk()
root.title("使用者登入")
#使用者名稱標簽和輸入框
Label(root, text="使用者名稱:").grid(row=0, column=0, sticky=W, padx=10, pady=10)
username_entry_login = Entry(root)
username_entry_login.grid(row=0, column=1, padx=10, pady=10)
#密碼標簽和輸入框
Label(root, text="密碼:").grid(row=1, column=0, sticky=W, padx=10, pady=10)
password_entry_login = Entry(root, show="*")
password_entry_login.grid(row=1, column=1, padx=10, pady=10)
#登入按鈕
Button(root, text="登入"command=login_user).grid(row=2, column=0, padx=10, pady=10)
#切換到註冊界面的按鈕
Button(root, text="還沒有帳號?去註冊"command=switch_to_register).grid(row=2, column=1, padx=10, pady=10)
root.mainloop()
#運行程式,初始顯示註冊界面
if __name__ == "__main__":
create_register_ui()