#导入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()
#!!!上面是启动窗口布局!!!
【Python】【Tkinter】无数据库登录功能
于 2024-07-10 21:29:53 首次发布