import tkinter as tk
import mysql.connector
# 创建MySQL数据库连接
mydb = mysql.connector.connect(host="localhost", user="root", passwd="password", database="mydatabase")
# 创建用户表
mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE IF NOT EXISTS users (username VARCHAR(255), password VARCHAR(255))")
# 登录函数
def login():
username = username_entry.get()
password = password_entry.get()
mycursor.execute("SELECT * FROM users WHERE username = %s AND password = %s", (username, password))
result = mycursor.fetchall()
if result:
status_label.config(text="Login successful")
else:
status_label.config(text="Invalid username or password")
# 注册函数
def register():
username = username_entry.get()
password = password_entry.get()
mycursor.execute("SELECT * FROM users WHERE username = %s", (username,))
result = mycursor.fetchall()
if result:
status_label.config(text="Username already exists")
else:
mycursor.execute("INSERT INTO users (username, password) VALUES (%s, %s)", (username, password))
mydb.commit()
status_label.config(text="Registration successful")
# 修改密码函数
def change_password():
username = username_entry.get()
old_password = old_password_entry.get()
new_password = new_password_entry.get()
mycursor.execute("SELECT * FROM users WHERE username = %s AND password = %s", (username, old_password))
result = mycursor.fetchall()
if result:
mycursor.execute("UPDATE users SET password = %s WHERE username = %s", (new_password, username))
mydb.commit()
status_label.config(text="Password changed successfully")
else:
status_label.config(text="Invalid username or password")
# 创建主窗口
root = tk.Tk()
root.title("Login System")
# 创建登录界面
login_frame = tk.Frame(root)
login_frame.pack(pady=20)
username_label = tk.Label(login_frame, text="Username:")
username_label.grid(row=0, column=0, padx=10, pady=10)
username_entry = tk.Entry(login_frame)
username_entry.grid(row=0, column=1, padx=10, pady=10)
password_label = tk.Label(login_frame, text="Password:")
password_label.grid(row=1, column=0, padx=10, pady=10)
password_entry = tk.Entry(login_frame, show="*")
password_entry.grid(row=1, column=1, padx=10, pady=10)
login_button = tk.Button(login_frame, text="Login", command=login)
login_button.grid(row=2, column=0, padx=10, pady=10)
register_button = tk.Button(login_frame, text="Register", command=register)
register_button.grid(row=2, column=1, padx=10, pady=10)
# 创建修改密码界面
change_password_frame = tk.Frame(root)
change_password_frame.pack(pady=20)
old_password_label = tk.Label(change_password_frame, text="Old Password:")
old_password_label.grid(row=0, column=0, padx=10, pady=10)
old_password_entry = tk.Entry(change_password_frame, show="*")
old_password_entry.grid(row=0, column=1, padx=10, pady=10)
new_password_label = tk.Label(change_password_frame, text="New Password:")
new_password_label.grid(row=1, column=0, padx=10, pady=10)
new_password_entry = tk.Entry(change_password_frame, show="*")
new_password_entry.grid(row=1, column=1, padx=10, pady=10)
change_password_button = tk.Button(change_password_frame, text="Change Password", command=change_password)
change_password_button.grid(row=2, column=0, padx=10, pady=10)
# 创建状态标签
status_label = tk.Label(root, text="")
status_label.pack(pady=10)
root.mainloop()
上述代码中的MySQL连接信息(host, user, passwd, database)需要根据实际情况进行修改。