【Python】【Tkinter】无数据库登录功能

#导入OS模块
import os

#导入Tkinter库
from tkinter import *
from tkinter.messagebox import *

#用户注册功能
def user_sign_up():
    #print('test')  #调试
    
    #用户名和密码获取
    username = entry_username.get()
    password = entry_password.get()
    
    final_path = username_path_get()    #目标用户名路径获取
    #预注册目标用户名文件夹重复检测
    if not os.path.exists(final_path):    #文件夹不存在
        os.makedirs(final_path) #用户名目录路径创建
        
        #密码文本文档创建
        txt_file = open(final_path+"/password.txt", "w", encoding="utf-8")  #以用户名目录路径创建密码文本文档
        txt_file.write(password)    #写入密码
        txt_file.close()    #结束
        
        showinfo('Hint','Registration successful!\nClick the button to login~!') #注册成功提示
    else:   #文件夹存在
        showinfo('Hint', 'Username already exists. Please try again.')   #用户名重复提示


#用户名路径获取
def username_path_get():
      directory1 = os.getcwd()    #获取运行目录
      user_print = entry_username.get()   #用户输入账号目录获取
      final_path = directory1 + '/' + user_print    #目标账号目录位置
      #print(directory)   #调试输出

      return final_path


#登录功能,检测输入框内容是否为空。若任一为空则提示错误;否则载入新窗口
def window_close():
    if entry_username.get() == '' or entry_password.get() == '':
        showinfo('Hint', 'Please finish enter!') #完成输入提示
    elif entry_username.get() == '' and entry_password.get() == '':
        showinfo('Hint', 'Please finish enter!')    #完成输入提示
    else:
        #用户名路径查找
        final_path = username_path_get()    #目标用户名路径获取
        #预注册目标用户名文件夹重复检测
        if not os.path.exists(final_path):    #用户路径不存在
          showinfo('Hint', 'Username does not exist. Please try again.')   #用户名不存在提示
        else:   #用户路径存在
            if os.access(final_path + "/password.txt", os.F_OK):    #密码存在
                txt_file = open(final_path + "/password.txt", "r", encoding = "utf-8")  #载入密码文本文档内容
                contents = txt_file.read()  #读入密码具体内容
                txt_file.close()    #结束读取
                
                password = entry_password.get() #密码获取
                #print(password)
                #print(contents)
                if contents == password:    #密码输入正确
                    window_lanuching.destroy()  #登录窗口销毁
                    window_test = Tk()  #新窗口载入
        
                    window_test.mainloop()  #运行新窗口主循环
                else:   #密码输入错误
                    showinfo('Hint', 'Password is not right, please try again!')    #输入错误提醒
 

#!!!下面是启动窗口布局!!!
window_lanuching = Tk()
 
#用户名标签及输入框
Label(window_lanuching, text = 'username').grid(row = 0, column = 0)  #第一行第一列,标签
entry_username = Entry(window_lanuching)
entry_username.grid(row = 0, column = 1)   #第一行第二列,输入框

#密码标签及输入框
Label(window_lanuching, text = 'password').grid(row = 1, column = 0)  #第二行第一列,标签
entry_password = Entry(window_lanuching, show = '*')
entry_password.grid(row = 1, column = 1)   #第二行第二列,输入框

#登录按钮
Button(window_lanuching, text = 'sign in', command = window_close).grid(row = 2, column = 0) #第三行第一列,按钮

#注册按钮
Button(window_lanuching, text = 'sign up', command = user_sign_up).grid(row = 2, column = 1) #第三行第二列,按钮
 
#运行窗口主循环
window_lanuching.mainloop()
#!!!上面是启动窗口布局!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值