【Python项目】tkinter基础 登录界面

期末作业要写一个项目,还是想写得像话一点,不想一直在控制台那里鬼搞,所以花了大概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()             #进入消息循环(必需组件)

后续在后面分成了管理员界面和用户界面,有需求的话在登录函数那里写一个判断就行了,大致就是这样,我会跟着慢慢发

散会

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值