【Python】GUI+OS实现简单登入/注册功能-----代码

import tkinter
import os
'''
Python 利用 GUI实现 登入-注册功能
1.需要引入tkinter(窗体)和os(输入/输出)库
2.实现窗体布局绘制
3.运行程序时,读取文件中已经写入的账号和密码若没有则空白
4.登入后会根据勾选是否将账号和密码写出文件(此处记住我和注册账号公用一个文件,可根据需求修改)
5.登入会检测是否注册有账号,如果没有需要跳转注册页去注册账号,注册好的账号会写出文件。
'''

#Window Login
root = tkinter.Tk()
root.title('Login')

#window windth ,height
root['height'] = 140
root['width'] = 240
names=''
pwds=''

#window UserName Label
labelName = tkinter.Label(root,text='User Name:',justify=tkinter.RIGHT,anchor='e',width=80)
labelName.place(x=10,y=5,width=80,height=20)

#window UserPwd Label
labelPwd = tkinter.Label(root,text='User Pwd:',justify=tkinter.RIGHT,anchor='e',width=80)
labelPwd.place(x=10,y=30,width=80,height=20)

#window UserName Textbox
varName=tkinter.StringVar(root,value='')
entryName=tkinter.Entry(root,width=80,textvariable=varName)
entryName.place(x=100,y=5,width=110,height=20)

#window UserPwd Textbox
varPwd=tkinter.StringVar(root,value='')
entryPwd=tkinter.Entry(root,show='*',width=80,textvariable=varPwd)
entryPwd.place(x=100,y=30,width=110,height=20)

#Auto write UserName , UserPwd
path = os.getenv('temp')
filename=os.path.join(path, 'D:info.txt')

try:
    with open(filename) as f:
        n,p = f.read().strip().split(',')
        
        varName.set(n)
        #varPwd.set(p)
except:
    pass

#Remember- checkbox on=0,off=1
rememberMe = tkinter.IntVar(root,value=1)
checkRemember = tkinter.Checkbutton(root,text='Remember Me',variable=rememberMe,onvalue=1,offvalue=0)
checkRemember.place(x=60,y=60,width=120,height=20)

#Login Button
def login():
    #get UserName , UserPwd
    name = entryName.get()
    pwd = entryPwd.get()
    with open(filename) as f:
        n,p = f.read().strip().split(',')
    #name and pwd is null ?
    if name == '' or pwd == '':
        tkinter.messagebox.showinfo(title='错误',message='用户名或者密码不允许为空!')
    else:
        if name == n and pwd == p :
            tkinter.messagebox.showinfo(title='恭喜',message='登入成功!')
            if rememberMe.get() == 1:
                #write filename
                with open(filename,'w') as f:
                    f.write(','.join((name,pwd)))
            else:
                try:
                    os.remove(filename)
                except:
                    pass
        else:
            tkinter.messagebox.showinfo('警告',message='用户名或者密码错误!')
#Login-button
button = tkinter.Button(root,text='Login',command=login)
button.place(x=30,y=100,width=50,height=20)

#Cancel-button
def cancel():
    #cancel UserName , UserPwd
    varName.set('')
    varPwd.set('')
ButtonCancel = tkinter.Button(root,text='Cancel',command=cancel)
ButtonCancel.place(x=95,y=100,width=50,height=20)
            
#Window Register---------------------------------------------------------------
def register():
    rootreg = tkinter.Tk()
    rootreg.title('Register')
    #window-register windth ,height
    rootreg['height'] = 140
    rootreg['width'] = 240
    
    #window UserName Label
    labelName = tkinter.Label(rootreg,text='User Name:',justify=tkinter.RIGHT,anchor='e',width=80)
    labelName.place(x=10,y=5,width=80,height=20)
    
    #window UserPwd Label
    labelPwd = tkinter.Label(rootreg,text='User Pwd:',justify=tkinter.RIGHT,anchor='e',width=80)
    labelPwd.place(x=10,y=30,width=80,height=20)
    
    #window UserName Textbox
    varName=tkinter.StringVar(rootreg,value='')
    entryName=tkinter.Entry(rootreg,width=80,textvariable=varName)
    entryName.place(x=100,y=5,width=110,height=20)
    
    #window UserPwd Textbox
    varPwd=tkinter.StringVar(rootreg,value='')
    entryPwd=tkinter.Entry(rootreg,width=80,textvariable=varPwd)
    entryPwd.place(x=100,y=30,width=110,height=20)
    
    def reg():
      #get UserName , UserPwd
      name = entryName.get()
      pwd = entryPwd.get()
      #name and pwd is null ?
      if name =='' or pwd == '':
          tkinter.messagebox.showinfo(title='错误',message='用户名或者密码不允许为空!')
      else:
          #write filename
          with open(filename,'w') as f:
             f.write(','.join((name,pwd)))
             tkinter.messagebox.showinfo(title='恭喜',message='注册成功!')
             rootreg.destroy()
    
    #Register-button
    button = tkinter.Button(rootreg,text='Register',command=reg)
    button.place(x=100,y=100,width=50,height=20)
    
    #Start Window
    rootreg.mainloop()
#Register-button
ButtonRegister = tkinter.Button(root,text='Register',command=register)
ButtonRegister.place(x=160,y=100,width=50,height=20)
#Window Register---------------------------------------------------------------

#Start Window
root.mainloop()

posted @ 2021-01-03 02:06  FlowersMie  阅读(428)  评论(0)    收藏  举报