实践登录注册案例(使用Python中的tkinter进行GUI编程)

简介

下面我们将实践一下,使用tkinter完成一个简单的登录注册案例。

完整代码

# coding:utf-8
import tkinter as tk
from tkinter import messagebox
"""
    登录案例
"""
# 数据库
date_base = [{
    
    "username":"zxy", "password" :"123456"},
             {
    
    "username":"lxy", "password" :"123456"},
             ]


# 获取窗口
window = tk.Tk()
# 设置窗口的标题
window.title("登录界面")
# 设置窗口的尺寸
window.geometry("1000x500")

# 建立一个画布
canvas = tk.Canvas(window, width=1000, height=200, bg="blue")
# 放置画布
canvas.pack()
image_file = tk.PhotoImage(file="img_1.png")
# 将图片文件放到画布中
canvas.create_image(0, 0,anchor="nw", image = image_file)



# 用户名标签
username_l = tk.Label(window, text="用户名", font="楷体")
username_l.place(x=301, y=251)

# 密码标签
password_l = tk.Label(window, text="密码", font="楷体", )
password_l.place(x=301, y=301)

var_username = tk.StringVar()
var_password = tk.StringVar()

# 用户名输入框
username_entry = tk.Entry(window, width=30, textvariable=var_username)
username_entry.place(x=401, y=251)

# 密码输入框
password_entry = tk.Entry(window, width=30, textvariable=var_password, show="*")
password_entry.place(x=401, y=301)

var_register_username = tk.StringVar()
var_register_password = tk.StringVar()
var_confirm_password = tk.StringVar()


# 注册处理
def do_register():
    register_username_v = var_register_username.get()
    register_password_v = var_register_password.get()
    confirm_password_v = var_confirm_password.get()
    db_have = False
    for item in date_base:
        if item.get("username") == register_username_v:
            db_have = True
            break
    # 格式校验,并进行提示
    if register_username_v == "":
        messagebox.showwarning(title="注册失败", message="用户名不能为空!")
        return
    elif register_password_v == "":
        messagebox.showwarning(title="注册失败", message="密码不能为空!")
        return
    elif date_base == True:
        messagebox.showwarning(title="注册失败",  message="该用户名已存在")
    elif register_password_v != confirm_password_v:
        messagebox.showwarning(title="两次密码不一致", message="您两次输入的密码不一致啊!")

    # 格式校验成功,进行注册
    if register_username_v != "" and register_password_v != "" and confirm_password_v != "" and register_password_v == confirm_password_v:
        date_base.append({
    
    "username": register_username_v, "password": register_password_v})
        messagebox.showinfo(title="注册成功", message=f"恭喜用户:{
      
      register_username_v}注册成功")


# 注册页面
def to_register():
    # 子窗口
    sub_window = tk.Toplevel(window)
    sub_window.title("注册界面")
    sub_window.geometry("800x400")

    # 用户名标签
    username_l = tk.Label(sub_window, text="用户名", font="楷体")
    username_l.place(x=271, y=151)

    # 密码标签
    password_l = tk.Label(sub_window, text="密码", font="楷体", )
    password_l.place(x=271, y=201)

    # 确认密码标签
    confirm_password_l = tk.Label(sub_window, text="确认密码", font="楷体", )
    confirm_password_l.place(x=271, y=251)

    # 用户名输入框
    username_entry = tk.Entry(sub_window, width=30, textvariable=var_register_username)
    username_entry.place(x=351, y=151)

    # 密码输入框
    password_entry = tk.Entry(sub_window, width=30, textvariable=var_register_password, show="*")
    password_entry.place(x=351, y=201)

    # 确认密码输入框
    confirm_password_entry = tk.Entry(sub_window, width=30, textvariable=var_confirm_password, show="*")
    confirm_password_entry.place(x=351, y=251)

    # 注册按钮
    register_button = tk.Button(sub_window, text="注册", font="楷体", command=do_register)
    register_button.place(x=401, y=301)


# 登录工作
def login_job():
    username_value = var_username.get()
    password_value = var_password.get()
    db_have = False
    # 先看是否存在该用户
    for item in date_base:
        if username_value == item.get("username"):
            db_have = True
            break



    # 各种校验
    if username_value == "":
        messagebox.showwarning(title="用户名不能为空", message="亲,用户名不能为空")
    elif password_value == "":
        messagebox.showwarning(title="密码不能为空", message="亲,密码不能为空")
    elif db_have == False:
        result = messagebox.askokcancel(title="该用户不存在", message="该用户不存在,亲,您是否马上去注册?")
        if result == True:
            to_register()
    else:
        # 用户名在数据库中存在
        for i in date_base:
            if username_value == i.get("username") and password_value == i.get("password"):
                messagebox.showinfo(title="登录成功", message=f"{
      
      username_value},恭喜您登录成功!")
                break
            elif username_value == i.get("username") and password_value != i.get("password"):
                messagebox.showerror(title="登录失败", message="密码错误")


# 登录按钮
login_button =tk.Button(window, text="登录", font="楷体", command=login_job)
login_button.place(x=401, y=351)

# 注册按钮
register_button = tk.Button(window, text="注册", font="楷体", command=to_register)
register_button.place(x=521, y=351)

# 将窗口循环起来
window.mainloop()


运行效果

在这里插入图片描述

附录:本文参考自——莫烦Python,觉得本文有用的话,记得点赞+收藏+关注!!!如有错误,恳请批评指正!

猜你喜欢

转载自blog.csdn.net/Elon15/article/details/125402925