如果有小伙伴们想看
Java语言
实现用户登录功能,可以点击👉👉👉Java–用户登录/注册界面(连接Mysql数据库)并可以通过验证码登录
1 效果展示
登录界面
(2)动图展示
2 内容说明
(1)项目结构
(2)需要下载xampp软件
xampp软件下载
提取码:2255
3 主要代码
(1)连接数据库参数文件db.json
{
"host": "localhost",
"port": 3306,
"username": "root",
"password": "123456",
"database": "数据库名称"
}
(2)连接mysql数据库db_conn.py
import json
from aifc import Error
import mysql.connector
'''
连接mysql数据库
'''
class DB_Conn:
def __init__(self):
# 从db.json中读取数据库连接参数
with open('./dbconn/db.json', 'r') as f:
db_config = json.load(f)
self.host = db_config['host']
self.port = db_config['port']
self.username = db_config['username']
self.password = db_config['password']
self.database = db_config['database']
self.conn = None
def connect_database(self):
try:
self.conn = mysql.connector.connect(
host=self.host,
port=self.port,
user=self.username,
password=self.password,
database=self.database
)
if self.conn.is_connected():
print("连接成功")
except Error:
print("连接失败")
return self.conn
(3)GUI登录界面设计login_gui.py
from tkinter import *
from tkinter import messagebox
from PIL import ImageTk, Image
from user import UserLogin
'''
登录窗体类
'''
class LoginForm:
def __init__(self):
self.root = Tk()
self.root.title("用户登录")
self.root.geometry("600x400+500+200")
self.root.resizable(0, 0) # 禁止手动伸缩窗口大小
# 设置背景图
self.background_image = ImageTk.PhotoImage(Image.open("./img/login.jpg"))
self.background_label = Label(self.root, image=self.background_image)
self.background_label.place(x=0, y=0, relwidth=1, relheight=1)
# 设置图标logo
self.logo_image = ImageTk.PhotoImage(file="./img/logo.jpg")
self.root.iconphoto(False, self.logo_image)
# 用户名标签和输入框
self.username_label = Label(self.root, text="用户名:",font=("微软雅黑", 12, "bold"))
self.username_label.place(x=200, y=70)
self.var_username = StringVar()
self.username_entry = Entry(self.root,textvariable=self.var_username,font=("微软雅黑", 12, "bold"),width=15)
self.username_entry.place(x=270, y=70)
# 密码标签和输入框
self.password_label = Label(self.root, text="密 码:",font=("微软雅黑", 12, "bold"))
# self.password_label.configure(background='systemTransparent')
self.password_label.place(x=200, y=170)
self.var_password = StringVar()
self.password_entry = Entry(self.root, textvariable=self.var_password,show="*",font=("微软雅黑", 12, "bold"),width=15)
self.password_entry.place(x=270, y=170)
# 登录按钮
self.login_button = Button(self.root, text="登录", command=self.login,width=10,font=("微软雅黑", 12, "bold"))
self.login_button.place(x=150, y=270)
# 重置按钮
self.re_button = Button(self.root, text="重置", command=self.__re,width=10,font=("微软雅黑", 12, "bold"))
self.re_button.place(x=350, y=270)
def show(self): # 自定义函数show
self.root.mainloop() # 显示窗体
def login(self):
username = self.username_entry.get()
password = self.password_entry.get()
if username=="":
messagebox.showerror("提示", "用户名不能为空")
return
if password=="":
messagebox.showerror("提示", "密码不能为空")
return
try:
user_login = UserLogin()
except:
messagebox.showerror("提示", "连接数据库失败")
return
result = user_login.login(username, password)
if result:
messagebox.showinfo("登录成功", "欢迎, " + username)
else:
messagebox.showerror("登录失败", "用户名或密码错误")
def __re(self):
self.var_username.set("")
self.var_password.set("")
(4)用户登录操作user.py
from aifc import Error
from db_conn import DB_Conn
'''
用户登录操作类
'''
class UserLogin:
def __init__(self):
self.conn = DB_Conn().connect_database()
def login(self, username, password):
global result
cursor = self.conn.cursor()
# 查询数据库中是否存在指定的用户名和密码,注意传入参数的格式
query = "SELECT * FROM user WHERE username=%s AND password=%s"
try:
cursor.execute(query, (username, password))
result = cursor.fetchone()
except Error as e:
print(e)
finally:
cursor.close()
self.conn.close()
if result:
return True
else:
return False
(5)程序执行入口mian.py
# 程序主入口
from login_gui import LoginForm
if __name__ == "__main__":
login_form = LoginForm()
login_form.show()
博主后记: 希望看到此篇博文的网友,如果发现有什么不对的地方,欢迎在下方留言指正!博主一定虚心接受并改正!大家一起共同进步。如果对你有所帮助,可以给博主一个赞👍。
想要获取源代码,可以直接访问我的Gitee仓库https://gitee.com/weh_coder/python-login-gui.git,记得给个star哦!