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

作者:独孤尚亮dugushangliang 时间:2021-01-07 06:00:09 

本文只是几年前学习的tkinter的时候写的测试程序,十分之简陋,只是学习用,没什么其他用处。

学习一下莫烦Python的tkinter教程,根据教程制作了用户登录注册页。基本功能为检查登录、注册。

运行如下:

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

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

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

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

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

代码如下:


# -*- coding: utf-8 -*-
"""
Created on Sun Aug  5 10:34:10 2018
@author: Administrator
"""
import tkinter as tk
import tkinter.messagebox
import pickle
#窗口
window=tk.Tk()
window.title('欢迎进入学习系统')
window.geometry('450x300')
#画布放置图片
canvas=tk.Canvas(window,height=300,width=500)
imagefile=tk.PhotoImage(file='qm.png')
image=canvas.create_image(0,0,anchor='nw',image=imagefile)
canvas.pack(side='top')
#标签 用户名密码
tk.Label(window,text='用户名:').place(x=100,y=150)
tk.Label(window,text='密码:').place(x=100,y=190)
#用户名输入框
var_usr_name=tk.StringVar()
entry_usr_name=tk.Entry(window,textvariable=var_usr_name)
entry_usr_name.place(x=160,y=150)
#密码输入框
var_usr_pwd=tk.StringVar()
entry_usr_pwd=tk.Entry(window,textvariable=var_usr_pwd,show='*')
entry_usr_pwd.place(x=160,y=190)

#登录函数
def usr_log_in():
   #输入框获取用户名密码
   usr_name=var_usr_name.get()
   usr_pwd=var_usr_pwd.get()
   #从本地字典获取用户信息,如果没有则新建本地数据库
   try:
       with open('usr_info.pickle','rb') as usr_file:
           usrs_info=pickle.load(usr_file)
   except FileNotFoundError:
       with open('usr_info.pickle','wb') as usr_file:
           usrs_info={'admin':'admin'}
           pickle.dump(usrs_info,usr_file)
   #判断用户名和密码是否匹配
   if usr_name in usrs_info:
       if usr_pwd == usrs_info[usr_name]:
           tk.messagebox.showinfo(title='welcome',
                                  message='欢迎您:'+usr_name)
       else:
           tk.messagebox.showerror(message='密码错误')
   #用户名密码不能为空
   elif usr_name=='' or usr_pwd=='' :
       tk.messagebox.showerror(message='用户名或密码为空')
   #不在数据库中弹出是否注册的框
   else:
       is_signup=tk.messagebox.askyesno('欢迎','您还没有注册,是否现在注册')
       if is_signup:
           usr_sign_up()
#注册函数
def usr_sign_up():
   #确认注册时的相应函数
   def signtowcg():
       #获取输入框内的内容
       nn=new_name.get()
       np=new_pwd.get()
       npf=new_pwd_confirm.get()

#本地加载已有用户信息,如果没有则已有用户信息为空
       try:
           with open('usr_info.pickle','rb') as usr_file:
               exist_usr_info=pickle.load(usr_file)
       except FileNotFoundError:
           exist_usr_info={}          

#检查用户名存在、密码为空、密码前后不一致
       if nn in exist_usr_info:
           tk.messagebox.showerror('错误','用户名已存在')
       elif np =='' or nn=='':
           tk.messagebox.showerror('错误','用户名或密码为空')
       elif np !=npf:
           tk.messagebox.showerror('错误','密码前后不一致')
       #注册信息没有问题则将用户名密码写入数据库
       else:
           exist_usr_info[nn]=np
           with open('usr_info.pickle','wb') as usr_file:
               pickle.dump(exist_usr_info,usr_file)
           tk.messagebox.showinfo('欢迎','注册成功')
           #注册成功关闭注册框
           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,text='用户名:').place(x=10,y=10)
   tk.Entry(window_sign_up,textvariable=new_name).place(x=150,y=10)
   #密码变量及标签、输入框
   new_pwd=tk.StringVar()
   tk.Label(window_sign_up,text='请输入密码:').place(x=10,y=50)
   tk.Entry(window_sign_up,textvariable=new_pwd,show='*').place(x=150,y=50)    
   #重复密码变量及标签、输入框
   new_pwd_confirm=tk.StringVar()
   tk.Label(window_sign_up,text='请再次输入密码:').place(x=10,y=90)
   tk.Entry(window_sign_up,textvariable=new_pwd_confirm,show='*').place(x=150,y=90)    
   #确认注册按钮及位置
   bt_confirm_sign_up=tk.Button(window_sign_up,text='确认注册',
                                command=signtowcg)
   bt_confirm_sign_up.place(x=150,y=130)
#退出的函数
def usr_sign_quit():
   window.destroy()
#登录 注册按钮
bt_login=tk.Button(window,text='登录',command=usr_log_in)
bt_login.place(x=140,y=230)
bt_logup=tk.Button(window,text='注册',command=usr_sign_up)
bt_logup.place(x=210,y=230)
bt_logquit=tk.Button(window,text='退出',command=usr_sign_quit)
bt_logquit.place(x=280,y=230)
#主循环
window.mainloop()

来源:https://blog.csdn.net/weixin_40450867/article/details/81431718

标签:python,tkinter,用户登录
0
投稿

猜你喜欢

  • 不支持RSS,如何跟踪网站的内容更新?

    2008-09-08 12:38:00
  • 开发Web应用程序的结构化过程

    2009-06-01 10:52:00
  • NumPy索引与切片的用法示例总结

    2022-05-13 19:33:38
  • Python实现简单的文本相似度分析操作详解

    2023-07-18 11:16:12
  • 超详细,教你用python语言实现QQ机器人制作教程

    2023-10-05 10:12:53
  • 善用用户反馈——浅谈用户反馈数据的处理

    2010-07-09 16:58:00
  • 基于javascript如何传递特殊字符

    2023-09-06 04:14:23
  • Python统计时间内的并发数代码实例

    2022-02-17 18:24:16
  • Django如何继承AbstractUser扩展字段

    2023-08-24 06:19:27
  • 在asp中使用js的encodeURIComponent方法

    2012-11-30 20:05:53
  • PHP基础之运算符的使用方法

    2023-11-20 17:33:55
  • python实现在图片上画特定大小角度矩形框

    2023-03-16 22:03:14
  • python2.x实现人民币转大写人民币

    2023-06-26 10:35:53
  • 浅谈python正则的常用方法 覆盖范围70%以上

    2022-05-18 21:01:13
  • 平面设计中的文字设计

    2009-01-15 12:09:00
  • 用ASP实现就MP3曲目信息的操作全攻略

    2008-05-28 12:42:00
  • python中的循环结构问题

    2023-05-30 14:13:21
  • 960px下的黄金分割

    2009-07-31 14:33:00
  • 使用HTML5中的canvas进行图形图像.游戏.动画开发时,不需要双缓冲机制

    2010-04-01 12:21:00
  • php+mysql开发的最简单在线题库(在线做题系统)完整案例

    2023-08-21 20:03:14
  • asp之家 网络编程 m.aspxhome.com