1 功能实现
-
Mysql的安装:MySQL的详细安装教程,看着有点复杂,后面还参考了一些C站上面的博客,安装了5.7.38版本。
-
登陆界面框架:利用tkinter连接mysql实现简单的登录功能。
-
运行结果:
① 初始界面
② 登录成功
③ 用户名或密码错误
2 MySQL的基础操作
MySQL的基础操作:[小白必看]MySQL创建数据库和创建数据表
- 创建数据库:CREATE DATABASE MyDB_one charset utf8;
- 打开数据库:USE MyDB_one;
- 创建登录数据表:CREATE TABLE user_login(username varchar(20), password varchar(20));
- 插入数据:INSERT INTO user_login(username,password) values(‘admin’,‘123456’);
- 显示数据:SELECT * FROM user_login
3 tkinter的消息框
调用成功登录和用户名密码错误这两个提示函数时,相应文本框的提示字符显示不全,最后参照这篇博文修改了一下:【tkinter标准对话框】messagebox:信息传递,消息对话框!。
def success_tip(username):
success = showinfo(title='消息提示框', message=username + '登录成功')
root.destroy()
pass
def fail_tip():
fail = showerror(title='错误消息框', message='用户名或密码错误')
4 完整代码
import tkinter as tk
from tkinter.messagebox import *
import pymysql
def success_tip(username):
success = showinfo(title='消息提示框', message=username + '登录成功')
root.destroy()
pass
def fail_tip():
fail = showerror(title='错误消息框', message='用户名或密码错误')
def auto_login():
db = pymysql.connect(host='localhost', user='root', password='123456', database='MyDB_one', port=3306)
cur = db.cursor() # 获取操作游标
sql = 'SELECT * FROM user_login'
entry1 = input1.get()
entry2 = input2.get()
flag = True
try:
cur.execute(sql) # 对用户数据表进行查询
results = cur.fetchall() # 获取所有查询数据
for row in results:
username = row[0] # 用户名
password = row[1] # 密码
# 判断输入的用户名和密码是否匹配
if username == entry1 and password == entry2:
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()