实践登录注册案例(使用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,觉得本文有用的话,记得点赞+收藏+关注!!!如有错误,恳请批评指正!

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Python GUI设计Tkinter从入门到实践》是一本经典的Python GUI编程教程。该PDF由在线资源、出版社等多种方式提供下载。在这本书,作者详细介绍了Tkinter库的基本知识和使用方法,并通过实际案例演示了GUI界面的设计和开发。 该书从Tkinter的安装开始,向读者展示了如何创建窗口、标签、按钮、文本框、列表框等常见的GUI组件。同时,作者还介绍了Tkinter的各种属性和方法,使读者可以自由地控制和定制界面的外观和行为。 除了基本的GUI组件,该书还详细介绍了Tkinter的布局管理器,如pack、grid和place,帮助读者更好地组织和布局界面元素。此外,作者还涵盖了事件处理、菜单栏、对话框、画布等高级组件的使用方法,让读者可以设计出更加复杂和丰富的GUI应用程序。 这本书的特点是结合了理论和实践,通过各种实例和项目,帮助读者逐步掌握Tkinter使用技巧和编程思想。无论是初学者还是有一定经验的开发人员,都可以通过这本书系统地学习和掌握Python GUI编程。 总之,《Python GUI设计Tkinter从入门到实践》是一本很实用的教程,通过学习它,读者可以对Tkinter有更深入的了解,并能够利用Tkinter创建出各种各样的GUI界面。无论是用于个人项目还是商业应用,都能够帮助开发者提高工作效率并设计出更加美观和易用的GUI应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值