【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()
浙公网安备 33010602011771号