期末作业要写一个项目,还是想写得像话一点,不想一直在控制台那里鬼搞,所以花了大概3、4天的样子学习了一下tkinter,写了一个登录界面,后续会跟着发,东西是写完了,但是有很多地方还需要修改,这一篇就当个记录吧,那些太深奥的话也不会讲,注释都比较偏向白话,因为学的时候看那些写的很官方的东西看的头疼,所以下面的注释都是我自己的理解,但是如果想研究透彻的话,还是要去看那些比较官方的教程,最后,希望对各位能有所帮助
import tkinter
import pickle
import tkinter.messagebox
#登录函数
def enter():
#用get提取
user_name=var_login_name.get()
user_password=var_password.get()
try:
user_file=open('user_info.txt','rb')
user_info=pickle.load(user_file)
except FileNotFoundError:
user_file=open('user_info.txt','wb')
user_info={'admin':'123456'}
pickle.dump(user_info,user_file)
finally:
user_file.close()
if user_name in user_info:
if user_password == user_info[user_name]:
tkinter.messagebox.showinfo(title='子轩图书管理系统',message='欢迎进入子轩图书管理系统')
else:
tkinter.messagebox.showerror(title='子轩图书管理系统',message='抱歉!您输入的用户名或密码有误')
else:
login_s=tkinter.messagebox.askokcancel(title='子轩图书管理系统',message='您输入的用户名不存在,您需要要创建新用户吗')
if login_s:
login()
#注册界面函数
def login():
def login_run():
#用get提取
new_user_name=new_var_name.get()
new_user_password=new_var_password.get()
repeat_user_password=repeat_var_password.get()
try:
user_file=open('user_info.txt', 'rb')
login_user_info=pickle.load(user_file)
finally:
user_file.close()
if new_user_password != repeat_user_password:
tkinter.messagebox.showerror(title='子轩图书管理系统',message='警告!您输入的两次密码不一致!')
elif new_user_name in login_user_info:
tkinter.messagebox.showerror(title='子轩图书管理系统',message='警告!您输入的用户名已存在!')
elif new_user_name == '':
tkinter.messagebox.showerror(title='子轩图书管理系统',message='警告!用户名不能为空!')
elif new_user_password == '':
tkinter.messagebox.showerror(title='子轩图书管理系统',message='警告!密码不能为空!')
else:
login_user_info[new_user_name]=new_user_password
try:
user_file=open('user_info.txt','wb')
pickle.dump(login_user_info,user_file)
finally:
user_file.close()
tkinter.messagebox.showinfo(title='子轩图书管理系统',message='注册成功,欢迎您')
root_login.destroy()
root_login=tkinter.Toplevel(root)
root_login.geometry('350x250+550+200')
root_login.title('子轩图书管理系统')
a=tkinter.Label(root_login,text='欢迎进入注册界面',font=('Arial',10))
a.pack()
#注册窗口界面
#注册用户名
new_var_name=tkinter.StringVar() #将输入框里面的东西拿出来
show_new_name=tkinter.Label(root_login,text='新用户名',font=('Arial',9))
show_new_name.place(x=70,y=50)
input_new_name=tkinter.Entry(root_login,textvariable=new_var_name,show=None)
input_new_name.place(x=125,y=50)
#注册密码
new_var_password=tkinter.StringVar() #将输入框里面的东西拿出来
show_new_password=tkinter.Label(root_login,text='新的密码',font=('Arial',9))
show_new_password.place(x=70,y=100)
input_new_password=tkinter.Entry(root_login,textvariable=new_var_password,show='*')
input_new_password.place(x=125,y=100)
#重复注册密码
repeat_var_password=tkinter.StringVar() #将输入框里面的东西拿出来
show_repeat_password=tkinter.Label(root_login,text='重复密码',font=('Arial',9))
show_repeat_password.place(x=70,y=150)
input_repeat_password=tkinter.Entry(root_login,textvariable=repeat_var_password,show='*')
input_repeat_password.place(x=125,y=150)
#注册界面按钮
login_button1=tkinter.Button(root_login,text='注册',width=7,command=login_run)
login_button1.place(x=115,y=180)
login_button2=tkinter.Button(root_login,text='取消',width=7,command='quit')
login_button2.place(x=205,y=180)
#主要界面
root=tkinter.Tk()
root.title('子轩图书管理系统')
#加后面的数字是为了改变界面弹出来的位置
root.geometry('500x300+450+200')
l = tkinter.Label(root, text='您好!欢迎来到图书管理系统\n请登录', bg='white', font=('Arial', 12), width=40, height=2)
l.pack()
a=tkinter.Label(root,text='图书管理系统')
a.pack()
#用户名
var_login_name=tkinter.StringVar() #将输入框里面的东西拿出来
var_login_name.set('请输入您的用户名')
show_login_name=tkinter.Label(root,text='用户名:',font=('Arial',8))
show_login_name.place(x=150,y=140)
input_login_name=tkinter.Entry(root,textvariable=var_login_name,show=None)
input_login_name.place(x=195,y=140)
#密码
var_password=tkinter.StringVar() #将输入框里面的东西拿出来
show_password=tkinter.Label(root,text='密码:',font=('Arial',8))
show_password.place(x=150,y=170)
input_password=tkinter.Entry(root,textvariable=var_password,show='*')
input_password.place(x=195,y=170)
# 主界面按钮 x间距50 y间距相等
button1=tkinter.Button(root,text='登录',width=5,command=enter) #生成button1
button1.place(x=170,y=200)
button2=tkinter.Button(root,text='注册',width=5,command=login)
button2.place(x=220,y=200)
button3=tkinter.Button(root,text='忘记密码')
button3.place(x=270,y=200)
root.mainloop() #进入消息循环(必需组件)
后续在后面分成了管理员界面和用户界面,有需求的话在登录函数那里写一个判断就行了,大致就是这样,我会跟着慢慢发
散会