Python + Tkinter连接本地MySQL数据库简单实现注册登录

项目结构:

源代码:

# -*- coding: utf-8 -*-
"""
@date:  2022/01/09 17:40
@author: Anker
@python:v3.10
"""
 
import tkinter as tk
import tkinter.messagebox
import pymysql
 
# 定义要执行的创建表的SQL语句
test_sql = """
                CREATE TABLE IF NOT EXISTS user(
                id INT auto_increment PRIMARY KEY,
                name varchar(20) not null,
                password varchar(20) not null
                )ENGINE=innodb DEFAULT CHARSET=utf8;
           """
 
# 登录窗口
window = tk.Tk()
window.title('学生考试系统')
window.geometry('800x500')
 
# 登录背景图片
canvas = tk.Canvas(window, height=1920, width=1080)
login_background = tk.PhotoImage(file='./view.png')
login_image = canvas.create_image(0, 0, anchor='nw', image=login_background)
canvas.pack(side='top')
 
# 用户名密码标签
tk.Label(window, text='用户名:', bg='yellow').place(x=300, y=200)
tk.Label(window, text='密   码:', bg='yellow').place(x=300, y=250)
 
# 用户名输入框
var_user_name = tk.StringVar()
entry_user_name = tk.Entry(window, textvariable=var_user_name)
entry_user_name.place(x=370, y=200)
 
# 密码输入框
var_user_pwd = tk.StringVar()
entry_user_pwd = tk.Entry(window, textvariable=var_user_pwd, show='*')
entry_user_pwd.place(x=370, y=250)
 
 
# 登录函数
def user_login():
    # 输入框获取用户名密码
    user_name = var_user_name.get()
    user_password = var_user_pwd.get()
    # 连接test_sql数据库
    conn = pymysql.connect(host="localhost", user="root", password="123456", database="test_sql", charset="utf8")
    curs = conn.cursor()
    # 执行SQL语句,创建user数据表
    curs.execute(test_sql)
    # 执行SQL语句,从user数据表中查询name和password字段值
    curs.execute("SELECT name,password FROM user")
    # 将数据库查询的结果保存在result中
    result = curs.fetchall()
    # fetchone()函数它的返回值是单个的元组, 也就是一行记录, 如果没有结果, 那就会返回null
    # fetchall()函数它的返回值是多个元组, 即返回多个行记录, 如果没有结果, 返回的是()
    # assert result, "数据库无该用户信息"   # 添加断言,判断数据库有无该用户信息,没有就直接断言错误
 
    # 登录账号操作
    name_list = [it[0] for it in result]    # 从数据库查询的result中遍历查询元组中第一个元素name
    # 判断用户名或密码不能为空
    if not(user_name and user_password):
        tk.messagebox.showwarning(title='警告', message='用户名或密码不能为空')
    # 判断用户名和密码是否匹配
    elif user_name in name_list:
        if user_password == result[name_list.index(user_name)][1]:
            tk.messagebox.showinfo(title='欢迎您', message='       登录成功!\r\n当前登录账号为:' + user_name)
            selection()
        else:
            tk.messagebox.showerror(title='错误', message='密码输入错误')
    # 账号不在数据库中,则弹出是否注册的框
    else:
        is_signup = tk.messagebox.askyesno(title='提示', message='该账号不存在,是否现在注册?')
        if is_signup:
            user_register()
 
 
# 注册函数
def user_register():
    # 确认注册函数
    def register_confirm():
        # 获取输入框内的内容
        name = new_name.get()
        password = new_password.get()
        password_confirm = new_password_confirm.get()
        # 先在本地手动创建一个test_sql数据库,然后连接该数据库
        conn = pymysql.connect(host="localhost", user="root", password="123456", database="test_sql", charset="utf8")
        curs = conn.cursor()
 
        # 注册账号操作
        try:
            # 执行SQL语句,创建user数据表
            curs.execute(test_sql)
            # 向user数据表中插入语句
            insert_sql = "INSERT INTO user(name, password) VALUES ('%s', '%s')" % (name, password)
            # 读取user数据表中的name和password字段值
            read_sql = f'''select * from user where name = "{name}" and password = "{password}" '''
            user_data = curs.execute(read_sql)
            # 判断注册账号和密码
            if not (name and password):
                tk.messagebox.showwarning(title='警告', message='注册账号或密码不能为空')
            elif password != password_confirm:
                tk.messagebox.showwarning(title='警告', message='两次密码输入不一致,请重新输入')
            else:
                if user_data.real:
                    tk.messagebox.showwarning(title='警告', message='该注册账号已存在')
                else:
                    curs.execute(insert_sql)
                    tk.messagebox.showinfo(title='恭喜您', message='      注册成功!\r\n注册账号为:' + name)
                    print("数据插入成功")
            # 提交到数据库执行
            conn.commit()
            curs.close()
        except IOError:
            print("数据插入失败")
            conn.rollback()
        # 关闭数据库连接
        conn.close()
        window_sign_up.destroy()
 
    # 注册窗口
    window_sign_up = tk.Toplevel(window)
    window_sign_up.geometry('350x200')
    window_sign_up.title('欢迎注册')
 
    # 注册账号及标签、输入框
    new_name = tk.StringVar()
    tk.Label(window_sign_up, bg='green', text='注册账号:').place(x=50, y=10)
    tk.Entry(window_sign_up, textvariable=new_name).place(x=150, y=10)
 
    # 注册密码及标签、输入框
    new_password = tk.StringVar()
    tk.Label(window_sign_up, bg='green', text='密      码:').place(x=50, y=50)
    tk.Entry(window_sign_up, textvariable=new_password, show='*').place(x=150, y=50)
 
    # 重复密码及标签、输入框
    new_password_confirm = tk.StringVar()
    tk.Label(window_sign_up, bg='green', text='确认密码:').place(x=50, y=90)
    tk.Entry(window_sign_up, textvariable=new_password_confirm, show='*').place(x=150, y=90)
 
    # 确认注册按钮及位置
    bt_confirm_sign_up = tk.Button(window_sign_up, bg='green', text='确认注册', command=register_confirm)
    bt_confirm_sign_up.place(x=150, y=130)
 
 
# 选择题函数
def selection():
 
    def wrong():
        tk.messagebox.showerror(title='错误', message='抱歉,您答错了')
 
    def right():
        tk.messagebox.showinfo(title='提示', message='恭喜您,答对了')
 
    # 选择题窗口
    window_options = tk.Toplevel(window)
    window_options.geometry('350x200')
    window_options.title('选择题')
    # 在图形界面上创建一个标签label用以显示并放置
    var = tk.StringVar()  # 定义一个var用来将radiobutton的值和Label的值联系在一起.
    lab = tk.Label(window_options, bg='red', fg='white', width=50)
    lab.pack()
    lab.config(text='第1题:两个锐角均为60度的三角形是什么三角形()' + var.get())
    # 创建3个radiobutton选项,其中variable=var, value='A'表示:当鼠标选中其中一个选项,把value的值A放到变量var中,然后赋值给variable
    radio1 = tk.Radiobutton(window_options, text='A:锐角三角形', variable=var, value='A', command=wrong)
    radio1.pack()
    radio2 = tk.Radiobutton(window_options, text='B:钝角三角形', variable=var, value='B', command=wrong)
    radio2.pack()
    radio3 = tk.Radiobutton(window_options, text='C:等边三角形', variable=var, value='C', command=right)
    radio3.pack()
    radio4 = tk.Radiobutton(window_options, text='D:直角三角形', variable=var, value='D', command=wrong)
    radio4.pack()
 
 
# 注册和登录按钮
bt_register = tk.Button(window, bg='yellow', text='注册', command=user_register)
bt_register.place(x=380, y=300)
bt_login = tk.Button(window, bg='yellow', text='登录', command=user_login)
bt_login.place(x=440, y=300)
 
# 主循环
window.mainloop()

到此这篇关于Python + Tkinter连接本地MySQL数据库简单实现注册登录的文章就介绍到这了,更多相关Python + Tkinter实现简单注册登录内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python tkinter与Mysql数据库交互实现账号登陆

    本例已经实现的数据库password,数据库的表以及表结构如下: 表中已经插入的信息: 实现思路无非是用户完成账户密码输入并点击登录按钮后,程序先进行数据库连接,然后根据用户提供的参数,发出相应的查询语句,根据返回的查询结果给出相应的响应. 代码实现 # -*- coding: utf-8 -*- """ Created on Tue Nov 6 14:29:54 2018 Description:实现tkinter的密码验证 1.与数据库验证 Version: @autho

  • Python聊天室带界面实现的示例代码(tkinter,Mysql,Treading,socket)

    一.前言 我用的是面向对象写的,把界面功能模块封装成类,然后在客户端创建对象然后进行调用.好处就是方便我们维护代码以及把相应的信息封装起来,每一个实例都是各不相同的. 所有的界面按钮处理事件都在客户端,在创建界面对象是会把客户端的处理事件函数作为创建对象的参数,之后再按钮上绑定这个函数,当点击按钮时便会回调函数 二.登录界面实现 登录界面模块chat_login_panel.py from tkinter import * # 导入模块,用户创建GUI界面 # 登陆界面类 class Login

  • Python实战项目之MySQL tkinter pyinstaller实现学生管理系统

    终极版终于有时间给大家分享了!!!. 我们先看一下效果图. 1:登录界面: 2:查询数据库所有的内容! 3:链接数据库: 4:最终的打包! 话不多说直接上代码!!!! from tkinter import * import pymysql from tkinter.messagebox import * from tkinter import ttk def get_connect(): conn = pymysql.connect(host='localhost', user="root&q

  • Python中tkinter+MySQL实现增删改查

    一.设置主窗口 # -*- coding: utf-8 -*- import tkinter from tkinter import ttk import pymysql # 导入消息对话框子模块 import tkinter.messagebox # 创建主窗口 root = tkinter.Tk() root.title('告警查询') # 设置窗口大小 root.minsize(500,500) tabControl = ttk.Notebook(root) tab1 = ttk.Fram

  • Python + Tkinter连接本地MySQL数据库简单实现注册登录

    项目结构: 源代码: # -*- coding: utf-8 -*- """ @date:  2022/01/09 17:40 @author: Anker @python:v3.10 """   import tkinter as tk import tkinter.messagebox import pymysql   # 定义要执行的创建表的SQL语句 test_sql = """              

  • Python + Tkinter连接本地MySQL数据库简单实现注册登录

    项目结构: 源代码: # -*- coding: utf-8 -*- """ @date:  2022/01/09 17:40 @author: Anker @python:v3.10 """   import tkinter as tk import tkinter.messagebox import pymysql   # 定义要执行的创建表的SQL语句 test_sql = """              

  • python远程连接服务器MySQL数据库

    本文实例为大家分享了python远程连接服务器MySQL数据库的具体代码,供大家参考,具体内容如下 这里默认大家都已经配置安装好 MySQL 和 Python 的MySQL 模块,且默认大家的DB内表和访问账号权限均已设置无误,下面直接代码演示: # -*- coding: utf-8 -*- """ Created on Fri Dec 30 10:43:35 2016 @author: zhengyongzhe """ import MySQ

  • Django连接本地mysql数据库(pycharm)的步骤

    第一步:更改setting.py中的DATABASES # 配置数据库 DATABASES = { 'default': { # python自带的一个数据库,基本不会被使用 # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), # 注册我们自己使用的数据库连接 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'NAME': '

  • MySql实现简单的注册登录(易语言)

    易语言简介: 易语言是一门以中文作为程序代码编程语言.以"易"著称.创始人为吴涛.早期版本的名字为E语言.易语言最早的版本的发布可追溯至2000年9月11日.创造易语言的初衷是进行用中文来编写程序的实践.从2000年至今,易语言已经发展到一定的规模,功能上.用户数量上都十分可观. 用到的主要易语言命令: 连接MySql (, , , , ) 执行SQL语句 (, ) 取记录集 () 读字段值 (, , ) 释放记录集 () 断开MySql () 命令介绍: ①.连接MySql (, ,

  • Python练习之操作MySQL数据库

    目录 一.创建MySQL数据表 三.向MySQL表中插入数据 三.查询MySQL中的数据 总结 文章介绍内容: 操作MySQL数据库: 创建MySQL数据表: 向表中插入记录: 其他数据库操作. 面试题: 如何创建MySQL数据表? 如何向MySQL表中插入数据? 如何查询MySQL中的数据? 一.创建MySQL数据表 # coding=utf-8 from pymysql import * def connectDB(): ''' 连接本地MySQL数据库,指定连接的库为test库. :ret

  • nodejs连接mysql数据库简单封装示例-mysql模块

    本人最近在学习研究nodejs,下面我来记录一下,有需要了解nodejs连接mysql数据库简单封装的朋友可参考.希望此文章对各位有所帮助. 安装mysql模块 npm install mysql 测试是否连接成功 mysql.js代码: var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', da

  • java实现的连接oracle/mysql数据库功能简单示例【附oracle+mysql数据库驱动包】

    本文实例讲述了java实现的连接oracle mysql数据库功能.分享给大家供大家参考,具体如下: package com.nuo.test.Connection; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DB

  • Python+Tkinter简单实现注册登录功能

    本文实例为大家分享了Python+Tkinter简单实现注册登录功能的具体代码,供大家参考,具体内容如下 项目结构: 源代码: # -*- coding: utf-8 -*- """ @date:  2022/01/09 17:40 @author: Anker @python:v3.10 """   import tkinter as tk import tkinter.messagebox import pymysql   # 定义要执行的创

  • Python实现定时备份mysql数据库并把备份数据库邮件发送

    一.先来看备份mysql数据库的命令 mysqldump -u root --password=root --database abcDataBase > c:/abc_backup.sql 二.写Python程序 BackupsDB.py #!/usr/bin/python # -*- coding: UTF-8 -*- ''''' zhouzhongqing 备份数据库 ''' import os import time import sched import smtplib from em

随机推荐