热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用python的tkinter模块实现的GUI版用户登录程序(附源码)

目录界面展示用户登录用户名不存在密码错误登录成功用户注册密码输入不一致注册成功取消注册源代码界面展示在登录界面,用户可以选择直接登录,也可以选择注册账号

目录

  • 界面展示
  • 用户登录
    • 用户名不存在
    • 密码错误
    • 登录成功
  • 用户注册
    • 密码输入不一致
    • 注册成功
    • 取消注册
  • 源代码


界面展示

在登录界面,用户可以选择直接登录,也可以选择注册账号

在这里插入图片描述



用户登录

登录时,如果用户名不存在,会询问是否注册,如果用户名存在并且密码正确,则登录成功




用户名不存在

在这里插入图片描述



密码错误

在这里插入图片描述



登录成功

在这里插入图片描述
在这里插入图片描述



用户注册

用户注册时,需要用户输入用户名,密码,和再次确认的密码,当两次输入的密码相同时才能成功注册,在注册时,用户也可以取消注册




密码输入不一致

在这里插入图片描述



注册成功

在这里插入图片描述



取消注册

在这里插入图片描述



源代码

每个部分都分成了一块,每个部分的功能都用注解标注了,可以对比功能看一下代码

import tkinter as tk
from tkinter import messagebox
from PIL import ImageTk# 存储注册成功用户名及密码
success = []# 主窗口
window = tk.Tk()
window.title("Please Log In")
window.geometry("900x660")# 背景画布
canvas = tk.Canvas(window,width=900,height=500)
image_file = ImageTk.PhotoImage(file="title2.jpg")
image = canvas.create_image(0,0,anchor="nw",image=image_file)
canvas.pack()# 用户名,用户密码文本
name_lable = tk.Label(window,text="UserName:",font=(15))
password_lable = tk.Label(window,text="Password:",font=(15))
name_lable.place(x=300,y=510)
password_lable.place(x=300,y=550)# 用户名,用户密码输入框
nameval = tk.StringVar()
passwordval = tk.StringVar()
name_entry = tk.Entry(window,textvariable=nameval,font=(12))
password_entry = tk.Entry(window,textvariable=passwordval,show="*",font=(12))
name_entry.place(x=400,y=515)
password_entry.place(x=400,y=555)# 登录按钮触发函数
def sign_in_f():user_si_name = name_entry.get()user_si_pass = password_entry.get()if user_si_name in success:i = success.index(user_si_name)if success[i+1] == user_si_pass:tk.messagebox.showinfo(title="登录提示",message="登录成功")else:tk.messagebox.showinfo(title="登录提示",message="密码错误")else:result = tk.messagebox.askquestion(title="登录提示",message="用户名不存在,是否立即注册?")if result == "yes":sign_up_f()else:pass# 注册按钮触发函数
def sign_up_f():# 用户注册界面singn_up_w = tk.Tk()singn_up_w.title("用户注册")singn_up_w.geometry("600x400")# 拥护注册 用户名,密码,确认密码文本su_name_lable = tk.Label(singn_up_w,text="UserName:",font=(12))su_pass_lable = tk.Label(singn_up_w,text="Password:",font=(12))su_cpass_lable = tk.Label(singn_up_w,text="Confirm Password:",font=(12))su_name_lable.place(x=95,y=50)su_pass_lable.place(x=95,y=150)su_cpass_lable.place(x=95,y=250)# 用户注册 用户名,密码,确认密码输入框su_name_val = tk.StringVar()su_pass_val = tk.StringVar()su_cpass_val = tk.StringVar()su_name_entry = tk.Entry(singn_up_w,textvariable=su_name_val,width=20,font=(12))su_pass_entry = tk.Entry(singn_up_w,textvariable=su_pass_val,width=20,show="*",font=(12))su_cpass_entry = tk.Entry(singn_up_w,textvariable=su_cpass_val,width=20,show="*",font=(12))su_name_entry.place(x=270,y=50)su_pass_entry.place(x=270,y=150)su_cpass_entry.place(x=270,y=250)# 用户在注册页面点击注册按钮触发的函数def su_conf_b():su_username = su_name_entry.get()su_userpass = su_pass_entry.get()su_usercpass = su_cpass_entry.get()if su_userpass == su_usercpass:tk.messagebox.showinfo(title="注册提示",message="注册成功,请登录")success.append(su_username)success.append(su_userpass)singn_up_w.destroy()else:tk.messagebox.showinfo(title="注册提示",message="两次输入的密码不同,请重新输入")# 用户在注册页面点击取消按钮触发的函数def su_cancel_b():result = tk.messagebox.askquestion(title="放弃注册",message="你真的要放弃注册吗?")if result == "yes":singn_up_w.destroy()else:pass# 用户注册 注册,取消按钮su_confirm_button = tk.Button(singn_up_w,text="Sign up",command=su_conf_b)su_cancle_button = tk.Button(singn_up_w,text="Cancel",command=su_cancel_b)su_confirm_button.place(x=170,y=330)su_cancle_button.place(x=370,y=330)# 登录,注册按钮
sign_in_button = tk.Button(window,text="Sing in",command=sign_in_f)
sign_up_button = tk.Button(window,text="Sign up",command=sign_up_f)
sign_in_button.place(x=350,y=600)
sign_up_button.place(x=470,y=600)window.mainloop()


推荐阅读
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 本文介绍了lintcode(12)题目的要求和解题思路,以及给出了相应的代码实现。题目要求在给定的字符串source中找到包括所有目标字符串字母的最短子串,并且时间复杂度为O(n)。解题思路是使用滑动窗口的方法,通过维护一个unordered_map来记录目标字符串中每个字符的出现次数,并使用双指针来寻找最小子串。代码实现部分给出了具体的实现代码。 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 本文介绍了一种解决PyQt界面在高分辨率下字体显示不完全的方法。通过设置High_DPI属性或应用自适应字体,可以解决在更高分辨率电脑上字体被控件遮挡的问题。同时,还提供了判断Qt版本和设置字体大小的代码示例。 ... [详细]
author-avatar
萌萌虾
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有