Python tkinter 实现简单登陆注册

最终效果

开始界面

注册

登陆

源码

login.py

# encoding=utf-8

from tkinter import *

from tkinter import messagebox as tkMessageBox

import mysql_connect as mys

import pymysql

import base64

#加密 将用户的密码加密后储存到数据库

def encryption(str):

str=str.encode(encoding="utf-8")

s2=base64.b64encode(str)

return s2.decode()

#解密 将数据库返回的密文解密后验证用户密码

def decryption(str):

str = str.encode(encoding="utf-8")

s1=base64.b64decode(str)

return s1.decode()

#处理注册

def newuser(name,pwd):

#声明全局变量,传递给insert

global cursor,db

pwd=encryption(pwd) #加密

if mys.name_exist(cursor,name): #返回正确的值说明用户名存在

tkMessageBox.showinfo(title='失败', message='用户名已存在!')

return False

else:

mys.insert_data(db=db,cursor=cursor,name=name,password=pwd)

tkMessageBox.showinfo(title='成功', message='注册成功')

#处理直接登录

def olduser(name,pwd):

global cursor

# print(name,pwd)

password=mys.get_password(cursor,name)

password=decryption(password) #解密

print("password : ",password)

print(pwd)

if password == pwd:

tkMessageBox.showinfo(title='成功', message='登陆成功! welcome back '+name)

else:

tkMessageBox.showinfo(title='失败', message='登录失败')

#处理注册窗口

def signin():

win1 = Toplevel()

l1 = Label(win1, text="注册")

l1.pack() # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM

l2 = Label(win1, text="姓名:")

l2.pack() # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM

sheet_text1 = StringVar()

sheet1 = Entry(win1, textvariable=sheet_text1)

sheet1.pack()

l3 = Label(win1, text="密码:")

l3.pack() # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM

sheet_text2 = StringVar()

sheet2 = Entry(win1, textvariable=sheet_text2)

sheet2.pack()

def on_click1():

name = sheet_text1.get()

pwd = sheet_text2.get()

#调用处理新用户窗口

newuser(str(name),str(pwd))

Button(win1, text="press", command=on_click1).pack()

#处理登录窗口

def login():

# win1 = Tk.winfo_toplevel(root)

#焦点绑定到当前窗口,否则无法获取输入

win1 = Toplevel()

l4 = Label(win1, text="登录")

l4.pack() # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM

l5 = Label(win1, text="姓名:")

l5.pack() # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM

sheet_text3 = StringVar()

sheet3 = Entry(win1, textvariable=sheet_text3)

sheet3.pack()

l6 = Label(win1, text="密码:")

l6.pack() # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM

sheet_text4 = StringVar()

sheet4 = Entry(win1, textvariable=sheet_text4)

sheet4.pack()

def on_click2():

name = sheet_text3.get()

pwd = sheet_text4.get()

olduser(name,pwd)

Button(win1, text="press", command=on_click2).pack()

#退出程序

def quit1():

root.quit()

if __name__ == '__main__':

try:

db = pymysql.connect("39.106.152.189", "study", "stfk0615", "study", use_unicode=True, charset='utf8')

cursor = db.cursor()

except:

print("connect error!")

root = Tk()

root.title('用户登录窗口')

#分别进入不同的窗口

Button(root, text="注册", command=signin).pack()

Button(root, text="登录", command=login).pack()

Button(root, text="退出", command=quit1).pack()

root.mainloop()

mysql_connect.py //封装MySQL操作

import pymysql

# import traceback

def name_exist(cursor,name):

exist_sql="""

SELECT PASSWORD

FROM INFO

WHERE NAME='%s' ;"""%(str(name)) #字符串匹配替换 name

cursor.execute(exist_sql)

result=cursor.fetchall()

if result:

return True #表示存在、

else:return False #表示不存在

def insert_data(db,cursor,name,password):

#插入数据

insert_sql="""

INSERT INTO INFO(NAME,PASSWORD) VALUES('%s','%s');"""%(str(name),str(password))

try:

cursor.execute(insert_sql) #执行sql

db.commit()

return True

except Exception:

print(Exception.args)

print('insert error')

return False

def creat_table(cursor,name):

# 创建数据表

sql="""

CREATE TABLE %s(

NAME CHAR(20) NOT NULL,

PASSWORD CHAR(20));

"""%(str(name))

try:

cursor.execute(sql)

return True

except:

print("creat_table error")

return False

def get_password(cursor,name):

#得到name对应的密码

sql="""

SELECT PASSWORD

FROM INFO

WHERE NAME='%s' ;"""%(str(name)) #字符串匹配替换 name

try:

cursor.execute(sql)

result=cursor.fetchall() #得到所有的结果

for a in result: #遍历结果 实际上返回的应该就只要一个值

print(a[0])

return a[0]

except:

print("get_error")

return False

def connect():

try:

db = pymysql.connect("39.106.152.189", "study", "stfk0615","study"

,use_unicode=True,charset='utf8')

#db.set_charset('utf-8')

cursor = db.cursor()

# cursor.execute('SET NAMES utf8;')

# cursor.execute('SET CHARACTER SET utf8;')

# cursor.execute('SET character_set_connection=utf8;')

return cursor

except:

print("connect error!")

return False

if __name__=='__main__':

db=pymysql.connect("39.106.152.189","study","stfk0615","study")

cursor=db.cursor()

db.close()

转发请注明出处,谢谢。

本源码用于 基于B/S三层体系结构,实现用户身份验证,实验。

python计算机体系三层结构_Python tkinter 实现简单登陆注册 基于B/S三层体系结构,实现用户身份验证...相关推荐

  1. 如何在Python Django中处理用户身份验证

    by Mohammed Subhan Khan 由Mohammed Subhan Khan 如何在Python Django中处理用户身份验证 (How to handle user authenti ...

  2. 计算机登录用户认证,一种计算机系统用户身份验证方法与流程

    本发明涉及一种身份验证方法,具体涉及一种计算机系统用户身份验证方法. 背景技术: 现代社会生活中,无论是科学研究.商业发展.日常办公还是医疗或教育,无一例外地都与计算机技术息息相关.计算机技术的发展使 ...

  3. python中的栈结构_Python可以实现栈的结构吗

    栈(stack)又名堆栈,它是一种运算受限的线性表.在Python中可使用列表进行实现. 什么是栈? 栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算.这 ...

  4. python炫酷动画源代码_Python tkinter实现的图片移动碰撞动画效果【附源码下载】...

    本文实例讲述了Python tkinter实现的图片移动碰撞动画效果.分享给大家供大家参考,具体如下: 先来看看运行效果: 具体代码如下: #!/usr/bin/python # -*- coding ...

  5. c/s三层结构信息系统的三个层次_网络资讯:三层架构是什么

    今天来说一下三层架构是什么这方面的一些讯息,不少朋友对一个完整计算机系 统的组成部分应该是这方面的一些讯息颇感兴趣的,小编今天就整理了一些信息,希望对有需要的朋友 有所帮助. 三层架构 通常意义上的三 ...

  6. 一个简单实用的,基于EF的三层架构

    到底什么样的框架才是好框架呢?或许不同人有不同的看法.我个人觉一个好的框架,最重要的要是简单实用,能快速适开发,可维护性高(不会出现复制黏贴的代码),并能快速响应各种业务场景的变化的框架,同时性能不会 ...

  7. python计算机体系三层结构_python学习笔记-计算机结构、操作系统

    2.计算机结构 计算机系统由硬件和软件系统组成. 软件包括系统软件和应用软件,系统软件就是管理计算机的软件,比如windows操作系统.数据库管理系统等.应用软件就是给我们做具体工作的软件,比如财务软 ...

  8. python中label组件参数_Python tkinter(六) 标签(Label)组件的属性说明及示例

    使用语法 widget = Radiobutton( master, parameter=value, ... ) master:文本框控件的父容器 parameter:文本框的参数 value:参数 ...

  9. python安装进度条不动_python – tkinter中的进度条不起作用

    我正在写一个小应用程序来复制一些文件.我做了几乎所有我想要的东西,但有三件事: 1)复制选项处于运动状态时移动的进度条.我可以显示它,但它不会反应. 我用这个来表明它: self.p = ttk.Pr ...

最新文章

  1. jstl自定义标签接口介绍
  2. Spring整合Mongodb,Maven的依赖,Spring配置,MongoDB的公共操作类,使用SpringMVC的Controller进行测试并返回结果的案例
  3. 超级计算机游戏电脑,Salad邀请PC玩家参与全球最大分布式超级计算机的构建
  4. html实现图片加载动画效果,HTML5+javascript实现图片加载进度动画效果
  5. 桌面消息提醒_手机消息总是延迟,真的是网速不行?3招教你找出捣鬼设置
  6. 一个关于反序列化的小问题
  7. python入门教程 非常详细-Python编程入门教程:从入门到高级,非常详细
  8. DV、OV、EV :SSL证书那么多,我该选择哪一种?
  9. Spring对 JDBC 的支持,JdbcTemplate类的使用
  10. Android实现手机和电脑屏幕共享
  11. 银行系统数据流图-盒图-软件结构图对应一例
  12. python对电商运营有帮助吗_做电商运营需要学习python嘛?
  13. HTML5游子吟网页的完整代码,《游子吟》教学案
  14. 教程-ftp21端口,OpenSSH,22,内部敏感服务对外开放存在风险
  15. 小熊派-FreeRTOS-串口打印
  16. Java SE核心I
  17. VCC(电源)和 GND(地)之间电容的作用
  18. 2016中国IT用户满意度总体保持平稳
  19. vivo 调用链 Agent 原理及实践
  20. 为向南太平洋地区扩张 华为在马来西亚设立地区总部

热门文章

  1. 黑页php,炫酷帅气的黑页源码
  2. 用100元买100支笔c语言,用C编程!有100块钱,买100支笔,其中钢笔3元,圆珠笔2元,铅笔0.5元,问各买多少支?...
  3. 解决Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile
  4. Git回滚代码到某个commit
  5. django重置密码发送html邮件,Django实现发送邮件找回密码功能
  6. JAVA中的通配符的符号_Linux下的通配符和特殊符号用法详解
  7. kmeans设置中心_kmeans聚类与支持向量机(1)
  8. JAVA8常量池监控_深入探索Java常量池
  9. 伪语言PHP,PHP语言之伪静态几种做法
  10. 微信开发之自动回复图文消息