python 实现简易PC端登录界面

这篇博客分享了一个使用Python tkinter库构建的简易登录注册界面DEMO,具备登录、注册和密码校验功能,同时展示了界面截图。代码中详细实现了界面布局、用户信息存储及验证等操作。
部署运行你感兴趣的模型镜像
  • 在开发一些PC端软件、小工具时,时常要用到一个简易的登录界面,完成对内部软件的保护,在这里,我给大家提供一个简易的登录界面demo,已经实现登录、注册、密码校验等功能,并添加了背景图
    ,具体效果如下:背景图

登录界面

  • 在这里输入输入账号密码(已注册),即可登录成功,效果如下

登录成功

  • 还有许多功能,如注册、登录密码错误等功能就不一一展示,大家可以将代码拷贝下来后自行验证,具体代码如下:
import tkinter
import pickle
from tkinter import messagebox
import time
from Tk_Process import *

class Login(object):
    def __init__(self):
        # 创建主窗口,用于容纳其它组件
        self.root = tkinter.Tk()
        # 给主窗口设置标题内容
        self.root.title("登录系统V1.0")
        self.root.geometry('300x250')
        # 运行代码时记得添加一个gif图片文件,不然是会出错的
        try:
            self.canvas = tkinter.Canvas(self.root, height=400, width=700,borderwidth=2)  # 创建画布
            self.image_file = tkinter.PhotoImage(file="test.gif")  # 加载图片文件
            self.image = self.canvas.create_image(0, 0, anchor='nw', image=self.image_file)  # 将图片置于画布上
            self.canvas.pack(side='top')  # 放置画布(为上端)
        except:
            print('无图片')

        #配置账户名
        self.var_usr_name = tkinter.StringVar()
        #配置密码
        self.var_usr_pwd = tkinter.StringVar()
        # 创建一个`label`名为`账户: `
        self.label_account = tkinter.Label(self.root, text='账户', font=('宋体', 11), width=4, borderwidth=2)
        # 创建一个`label`名为`密码: `
        self.label_password = tkinter.Label(self.root, text='密码', font=('宋体', 11), width=4, borderwidth=2)
        # 创建一个账号输入框,并设置尺寸
        self.input_account = tkinter.Entry(self.root, width=20, textvariable=self.var_usr_name, font=('宋体', 11), borderwidth=2)
        # 创建一个密码输入框,并设置尺寸
        self.input_password = tkinter.Entry(self.root, show='*', width=20, textvariable=self.var_usr_pwd,font=('宋体', 11), borderwidth=2)

        # 创建一个登录系统的按钮
        self.login_button = tkinter.Button(self.root, command=self.usr_login, text="登录", width=4, font=('宋体', 11), borderwidth=2)
        # 创建一个注册系统的按钮
        self.siginUp_button = tkinter.Button(self.root, command=self.usr_sign_up, text="注册", width=4, font=('宋体', 11), borderwidth=2)

    # 完成布局
    def gui_arrang(self):
        self.label_account.place(x=35, y=70)
        self.label_password.place(x=35, y=125)

        self.input_account.place(x=95, y=70)
        self.input_password.place(x=95, y=125)

        self.login_button.place(x=95, y=180)
        self.siginUp_button.place(x=190, y=180)

    def usr_login(self):
        usr_name = self.var_usr_name.get()
        usr_pwd = self.var_usr_pwd.get()
        
        try:
            with open('usrs_info', 'rb') as usr_file:
                usrs_info = pickle.load(usr_file)
        except FileNotFoundError:
            with open('usrs_info', 'wb') as usr_file:
                usrs_info = {'admin': 'admin'}
                pickle.dump(usrs_info, usr_file)
        if usr_name in usrs_info:
            if usr_pwd == usrs_info[usr_name]:
                #登录成功
                tkinter.messagebox.showinfo(title='欢迎', message='欢迎使用!')
            else:
                #登录失败
                tkinter.messagebox.showinfo(message='密码错误,请重试!')
        else:
            is_sign_up = tkinter.messagebox.askyesno('欢迎', '您还没有注册,请前往注册!')

            if is_sign_up:
                self.usr_sign_up()
        # 登录用户不存在需要注册

    def usr_sign_up(self):
        def sign_to_Mofan_Python():
            np = new_pwd.get()
            npf = new_pwd_confirm.get()
            nn = new_name.get()
            with open('usrs_info', 'rb') as usr_file:
                exist_usr_info = pickle.load(usr_file)
                print("exist_usr_info:",exist_usr_info)
            if len(nn) != 11:
                tkinter.messagebox.showerror('错误', '账户长度有误!')
            elif np != npf:
                tkinter.messagebox.showerror('错误', '两次密码不一致!')
            elif nn in exist_usr_info:
                tkinter.messagebox.showerror('错误', '该用户已注册!')
            else:
                exist_usr_info[nn] = np
                with open('usrs_info', 'wb') as usr_file:
                    pickle.dump(exist_usr_info, usr_file)
                tkinter.messagebox.showinfo('欢迎', '注册成功!')
                window_sign_up.destroy()

        window_sign_up = tkinter.Toplevel(self.root)
        window_sign_up.geometry('280x170')
        window_sign_up.title('注册窗口')

        new_name = tkinter.StringVar()
        # new_name.set('zhuxuwu@kaadas.com')
        tkinter.Label(window_sign_up, text='账号:').place(x=20, y=10)
        entry_new_name = tkinter.Entry(window_sign_up, textvariable=new_name)
        entry_new_name.place(x=100, y=10)

        new_pwd = tkinter.StringVar()
        tkinter.Label(window_sign_up, text='密码:').place(x=20, y=50)
        entry_new_pwd = tkinter.Entry(window_sign_up, textvariable=new_pwd, show='*')
        entry_new_pwd.place(x=100, y=50)

        new_pwd_confirm = tkinter.StringVar()
        #new_pwd_confirm.set(md5Encode(entry_new_pwd))
        tkinter.Label(window_sign_up, text='验证密码:').place(x=20, y=90)
        entry_comfirm_sign_up = tkinter.Entry(window_sign_up, textvariable=new_pwd_confirm, show='*')
        entry_comfirm_sign_up.place(x=100, y=90)

        print("window_sign_up:",window_sign_up)
        btn_comfirm_sign_up = tkinter.Button(window_sign_up, text='注册', command=sign_to_Mofan_Python)
        btn_comfirm_sign_up.place(x=130, y=130)

def main():
    # 初始化对象
    L = Login()
    # 进行布局
    L.gui_arrang()
    # 主程序执行
    tkinter.mainloop()

if __name__ == '__main__':
    main()
  • 有问题都可以私信我哦,希望能帮到大家!

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值