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
 
# 定义要执行的创建表的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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 基于python的Tkinter编写登陆注册界面

    tkinter创建登陆注册界面,供大家参考,具体内容如下 import tkinter as tk from tkinter import messagebox #设置窗口居中 def window_info(): ws = window.winfo_screenwidth() hs = window.winfo_screenheight() x = (ws / 2) - 200 y = (hs / 2) - 200 print("%d,%d" % (ws, hs)) return x

  • Python+tkinter模拟“记住我”自动登录实例代码

    本文分享的代码主要是通过Python+tkinter模拟"记住我"自动登录的功能,具体介绍如下. 基本思路:如果某次登录成功,则创建临时文件记录有关信息,每次启动程序时尝试自动获取上次登录成功的信息并自动编写.本文主要演示思路,可根据实际系统中的需要进行改写,例如读取数据库并验证用户名和密码是否正确.对用户名和密码进行本地加密存储等等. import tkinter import tkinter.messagebox import os import os.path # 获取Windo

  • python tkinter制作用户登录界面的简单实现

    本文只是几年前学习的tkinter的时候写的测试程序,十分之简陋,只是学习用,没什么其他用处. 学习一下莫烦Python的tkinter教程,根据教程制作了用户登录注册页.基本功能为检查登录.注册. 运行如下: ​​​​​​ 代码如下: # -*- coding: utf-8 -*- """ Created on Sun Aug 5 10:34:10 2018 @author: Administrator """ import tkinter a

  • Python中tkinter的用户登录管理的实现

    内容 编写一个用户登录管理程序,设计窗体的布局,制定密码规则和验证码规则.要求使用 Python 标准库 tkinter 编写基于GUI 的用户登录窗体.通过该窗体,用户输入用户名.密码和验证码等信息,确认登录后需要判断用户信息是否合法,并弹出对应的反馈信息.通过判断用户是否在用户信息中,以及输入密码是否与用户信息文件中用户名所对应的密码是否相同,来判断用户是否合法.此外,新用户还可以进行注册,注册需要输入用户名.密码.手机号和身份证号等信息.注册时密码需要遵循一定规则(长度不小于8且含有数字.

  • 深入了解python的tkinter实现简单登录

    目录 通过python的tkinter实现简单的注册登录 代码 截图 登录页面 注册页面 个人主页 修改个人信息失败 修改个人信息成功 重新登录twb 总结 通过python的tkinter实现简单的注册登录 参考文章:https://www.jb51.net/article/197751.htm 编写一个用户登录界面,用户可以登录账户信息,如果账户已经存在,可以直接登录,登录名或者登录密码输入错误会提示,如果账户不存在,提示用户注册,点击注册进去注册页面,输入注册信息,确定后便可以返回登录界面

  • Python Tkinter 简单登录界面的实现

    如下所示: from tkinter import * class Reg (Frame): def __init__(self,master): frame = Frame(master) frame.pack() self.lab1 = Label(frame,text = "账户:") self.lab1.grid(row = 0,column = 0,sticky = W) self.ent1 = Entry(frame) self.ent1.grid(row = 0,colu

  • 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简单实现注册登录功能

    本文实例为大家分享了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 + 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 = """              

  • IDEA实现 springmvc的简单注册登录功能的示例代码

    1.基本环境搭建 spring简介 SpringMVC框架是以请求为驱动,围绕Servlet设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图.其中核心类是DispatcherServlet,它是一个Servlet,顶层是实现的Servlet接口. project创建 在图中填上项目名称即可,其他直接next 如上图所示,创建两个包,并且指定包的类型,如下图,java包指定为Sources Root,resouces包指定为Resources root 整个目录结构: pom依赖

  • Python实现注册登录功能

    用Python写个注册登录功能,供大家参考,具体内容如下 本文是用Python写一个注册登录功能,难度不大,很适合练手主要就是用列表和字典,以及逻辑判断用到的第3方库模块是time模块,以及re(正则表达式)模块这里使用time模块就是为了通过sleep方法,让程序运行有进程感,不是一下子蹦出所有信息使用re模块就是用于判断密码的复杂性,我们注册软件系统判断我们的密码是否足够复杂就是通过正则表达式去判断的 首先第1步就是导入这2个模块,即 import time import re 之后需要1个

  • Spring MVC+mybatis实现注册登录功能

    本文实例为大家分享了Spring MVC mybatis实现注册登录功能的具体代码,供大家参考,具体内容如下 前期准备: 如下图所示,准备好所需要的包 新建工程,导入所需要的包,在web.xml中配置好所需要的,如下 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee&q

  • NodeJs+MySQL实现注册登录功能

    本文实例为大家分享了NodeJs+MySQL实现注册登录功能的具体代码,供大家参考,具体内容如下 之前写过一个没有连接数据库的注册与登陆的实现,这次加上了数据库 刚刚接触后端,很多不完善的地方,有错误请指正 nodejs中mysql的写法: //连接池 let db=mysql.createPool({'配置'})    db.query(`sql语句`,(err,data)=>{}) 并且在数据库中存储的密码应该是密文 function md5(str){   let obj=crypto.c

  • python 3.0 模拟用户登录功能并实现三次错误锁定

    Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. 像Perl语言一样, Python 源代码同样遵循 GPL(GNU General Public License)协议. Python的3.0版本,常被称为Python 3000,或简称Py3k.相对于Python的早期版本,这是一个较大的升级.为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容. 下面给大

  • PHP简单实现单点登录功能示例

    本文实例讲述了PHP简单实现单点登录功能.分享给大家供大家参考,具体如下: 1.准备两个虚拟域名 127.0.0.1  www.openpoor.com 127.0.0.1  www.myspace.com 2.在openpoor的根目录下创建以下文件 index.PHP <?php session_start(); ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"/>

随机推荐